<?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>58250</bug_id>
          
          <creation_ts>2011-04-11 11:43:00 -0700</creation_ts>
          <short_desc>Rename MediaControls to MediaControlRootElement.</short_desc>
          <delta_ts>2011-04-11 18:06:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53020</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>383318</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-11 11:43:00 -0700</bug_when>
    <thetext>Rename MediaControls to MediaControlRootElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383322</commentid>
    <comment_count>1</comment_count>
      <attachid>89040</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-11 11:44:57 -0700</bug_when>
    <thetext>Created attachment 89040
Needs full bake on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383333</commentid>
    <comment_count>2</comment_count>
      <attachid>89040</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-04-11 11:55:42 -0700</bug_when>
    <thetext>Comment on attachment 89040
Needs full bake on EWS.

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

&gt; Tools/ChangeLog:9
&gt; +2011-04-11  Dimitri Glazkov  &lt;dglazkov@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Rename MediaControls to MediaControlRootElement.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=58250
&gt; +
&gt; +        * Scripts/do-webcore-rename:
&gt; +

Oops?

&gt; Tools/Scripts/do-webcore-rename:100
&gt; -    &quot;DocLoader&quot; =&gt; &quot;CachedResourceLoader&quot;,
&gt; +    &quot;MediaControls&quot; =&gt; &quot;MediaControlRootElement&quot;,

Oops, did you really mean to check this in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383360</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-11 12:15:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 89040 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89040&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +2011-04-11  Dimitri Glazkov  &lt;dglazkov@chromium.org&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Rename MediaControls to MediaControlRootElement.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=58250
&gt; &gt; +
&gt; &gt; +        * Scripts/do-webcore-rename:
&gt; &gt; +
&gt; 
&gt; Oops?
&gt; 
&gt; &gt; Tools/Scripts/do-webcore-rename:100
&gt; &gt; -    &quot;DocLoader&quot; =&gt; &quot;CachedResourceLoader&quot;,
&gt; &gt; +    &quot;MediaControls&quot; =&gt; &quot;MediaControlRootElement&quot;,
&gt; 
&gt; Oops, did you really mean to check this in?

I know it looks weird, but that&apos;s how we&apos;re supposed to do it. Each rename also commits the change here, so that you can easily see what&apos;s been renamed using this tool: http://trac.webkit.org/log/trunk/Tools/Scripts/do-webcore-rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383363</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-04-11 12:19:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I know it looks weird, but that&apos;s how we&apos;re supposed to do it. Each rename also commits 
&gt; the change here, so that you can easily see what&apos;s been renamed using this tool: 
&gt; http://trac.webkit.org/log/trunk/Tools/Scripts/do-webcore-rename

Hah, I learned something new today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383694</commentid>
    <comment_count>5</comment_count>
      <attachid>89040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-11 17:04:55 -0700</bug_when>
    <thetext>Comment on attachment 89040
Needs full bake on EWS.

Rejecting attachment 89040 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
/WebCore/rendering/MediaControlElements.h
patching file Source/WebKit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/chromium/public/WebContextMenuData.h
patching file Source/WebKit/chromium/src/ContextMenuClientImpl.cpp
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/Scripts/do-webcore-rename

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Eric Carlson&apos;, u&apos;--for...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8392085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383727</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-11 18:06:11 -0700</bug_when>
    <thetext>Committed r83545: &lt;http://trac.webkit.org/changeset/83545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89040</attachid>
            <date>2011-04-11 11:44:57 -0700</date>
            <delta_ts>2011-04-11 17:04:55 -0700</delta_ts>
            <desc>Needs full bake on EWS.</desc>
            <filename>bug-58250-20110411114455.patch</filename>
            <type>text/plain</type>
            <size>73524</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNDYyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMDQtMTEgIERpbWl0cmkg
R2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTWVkaWFDb250cm9scyB0byBNZWRpYUNv
bnRyb2xSb290RWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4MjUwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAg
ICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
bnN1cmVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3cpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmhpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Om1ha2VPcGFxdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Om1ha2VUcmFuc3BhcmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVz
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFj
a1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVw
ZGF0ZVRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpyZXBvcnRlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpjaGFuZ2VkTmV0d29ya1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Ojpsb2FkZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZE11dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWRWb2x1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmVudGVyZWRGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpleGl0
ZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzaG93Vm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5oLgorICAgICAgICAoV2ViQ29yZTo6dG9NZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxl
bWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9s
RWxlbWVudHMuaDoKKwogMjAxMS0wNC0wOSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3Vn
aEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQW5k
cm9pZC5tawkocmV2aXNpb24gODM0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9D
QUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwK
IAlodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwIFwKIAlcCi0JaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9scy5jcHAgXAorCWh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBcCiAJ
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBcCiAJaHRtbC9zaGFkb3cvUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmNwcCBcCiAJaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gODM0NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODc5LDcgKzg3OSw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNl
ci5jcHAKICAgICBodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwCiAKLSAgICBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzLmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmNwcAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKICAgICBodG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biA4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE4MzYsOCArMTgzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTRmlsdGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNw
cCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODM0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxNjAsOCArMzE2MCw4IEBACiAgICAgICAgICAg
ICAnaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvWFNTRmlsdGVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvWFNTRmls
dGVyLmgnLAotICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwJywKLSAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgnLAorICAgICAgICAgICAgJ2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9z
aGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cv
TWV0ZXJTaGFkb3dFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDgzNDYwKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTgwMyw3ICs4
MDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIu
Y3BwIFwKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgXAogICAgIGh0
bWwvcGFyc2VyL1hTU0ZpbHRlci5jcHAgXAotICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwIFwKKyAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgXAogICAg
IGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1By
b2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDgzNDYwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2Njg1LDExICs1NjY4NSwxMSBA
QAogCQkJCU5hbWU9InNoYWRvdyIKIAkJCQk+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xzLmNwcCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRp
YUNvbnRyb2xzLmgiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gODM0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg4OSw4ICs4ODksOCBAQAogCQk0MTM4RDMz
NjEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBF
dmVudENvbnRleHQuY3BwICovOyB9OwogCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xp
ZGVyVGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50Lmgg
Ki87IH07CiAJCTQxNTBGOUYyMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5
RjAxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgKi87IH07Ci0JCTQx
NTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUg
LyogTWVkaWFDb250cm9scy5oICovOyB9OwotCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyog
TWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTU3QUY3RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9scy5jcHAgKi87
IH07CisJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1N0FG
N0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmggKi87IH07CisJ
CTQxNTdBRjgxMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3QUY3RjEy
RjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwICovOyB9OwogCQk0
MTYyQTQ1MDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0
NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi87IH07CiAJCTQxNjJB
NDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBE
RkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovOyB9OwogCQk0MTYyQTQ1NDEwMTE0
NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUzMTAxMTQ1RTMw
MERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovOyB9OwpAQCAt
NzM2MSw4ICs3MzYxLDggQEAKIAkJNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29u
dGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudENvbnRl
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUwRjlFRjEyQjZFMEU3MDAw
OEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNsaWRlclRodW1iRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsaWRlclRodW1iRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAv
KiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
Q29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE1N0FGN0YxMkYxRkIw
NDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU3QUY3RjEyRjFGQjA0MDBBOEM2
RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDRFMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgcGF0aCA9IHdvcmtlcnMvRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYy
QTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHBhdGggPSB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM0NzIsOCArMTM0NzIsOCBAQAogCQk0MTUwRjlFRDEyQjZFMDk5MDAwOEM4NjAgLyog
c2hhZG93ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0
MTU3QUY3RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9scy5jcHAgKi8sCi0JCQkJNDE1
N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHMuaCAqLywKKwkJCQk0MTU3QUY3
RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwICovLAorCQkJ
CTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oICov
LAogCQkJCUE3OEU1MjZEMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuY3Bw
ICovLAogCQkJCUE3OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQu
aCAqLywKIAkJCQlBNzE1RTY1MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmNwcCAqLywKQEAgLTIxOTA2LDcgKzIxOTA2LDcgQEAKIAkJCQk0OUU5MTFDNzBFRjg2RDQ3
MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQkZFN0UxMzBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAv
KiBNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTU3QUY4MDEyRjFGQjA0MDBB
OEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
MjA1QUI4MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDQ2MTNBRDBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEUxOTU5MjIwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0ODE1LDcgKzI0ODE1LDcgQEAKIAkJCQk0OUQ1REMyQjBGNDIz
QTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlFOTExQzYwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE1N0FGODExMkYx
RkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE1
N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRFMTk1OTIxMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRp
YUZlYXR1cmVOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZFMDBB
OEVGNUYgLyogTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA4MzQ2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcg
KzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxW
aWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiTWVkaWFDb250
cm9scy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
TWVkaWFEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lZGlhRXJyb3IuaCIKICNpbmNsdWRlICJNZWRp
YUxpc3QuaCIKQEAgLTI2MzIsNyArMjYzMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJp
dmF0ZUJyb3dzaW5nU3QKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2
YXRlTW9kZSk7CiB9CiAKLU1lZGlhQ29udHJvbHMqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbHMoKQorTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
Q29udHJvbHMoKQogewogICAgIHJldHVybiBzaGFkb3dSb290KCkgPyB0b01lZGlhQ29udHJvbHMo
c2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpIDogMDsKIH0KQEAgLTI2NDgsNyArMjY0OCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlTWVkaWFDb250cm8KICAgICAgICAgcmV0dXJu
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKE1lZGlhQ29udHJvbHM6OmNyZWF0ZSh0aGlzKSwgZWMpOworICAgIGVuc3VyZVNoYWRv
d1Jvb3QoKS0+YXBwZW5kQ2hpbGQoTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZSh0aGlz
KSwgZWMpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAkocmV2aXNpb24gODM0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNv
bnRyb2xzOworY2xhc3MgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ7CiBjbGFzcyBNZWRpYUVycm9y
OwogY2xhc3MgS1VSTDsKIGNsYXNzIFRpbWVSYW5nZXM7CkBAIC0xNzIsNyArMTcyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CiAKLSAgICBNZWRpYUNvbnRyb2xzKiBtZWRp
YUNvbnRyb2xzKCk7CisgICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqIG1lZGlhQ29udHJvbHMo
KTsKIAogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxl
bWVudC5jcHAJKHJldmlzaW9uIDgzNDYwKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmNwcDo4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgorCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworCit1c2luZyBuYW1lc3BhY2Ugc3RkOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK01l
ZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQorICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkp
CisgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCisgICAgLCBtX3Jld2luZEJ1dHRv
bigwKQorICAgICwgbV9wbGF5QnV0dG9uKDApCisgICAgLCBtX3JldHVyblRvUmVhbFRpbWVCdXR0
b24oMCkKKyAgICAsIG1fc3RhdHVzRGlzcGxheSgwKQorICAgICwgbV9jdXJyZW50VGltZURpc3Bs
YXkoMCkKKyAgICAsIG1fdGltZWxpbmUoMCkKKyAgICAsIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXko
MCkKKyAgICAsIG1fdGltZWxpbmVDb250YWluZXIoMCkKKyAgICAsIG1fc2Vla0JhY2tCdXR0b24o
MCkKKyAgICAsIG1fc2Vla0ZvcndhcmRCdXR0b24oMCkKKyAgICAsIG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24oMCkKKyAgICAsIG1fcGFuZWxNdXRlQnV0dG9uKDApCisgICAgLCBtX3ZvbHVt
ZVNsaWRlcigwKQorICAgICwgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uKDApCisgICAgLCBtX3Zv
bHVtZVNsaWRlckNvbnRhaW5lcigwKQorICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uKDApCisgICAg
LCBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24oMCkKKyAgICAsIG1fZnVsbFNjcmVlblZvbHVt
ZVNsaWRlcigwKQorICAgICwgbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uKDApCisgICAgLCBt
X3BhbmVsKDApCisgICAgLCBtX29wYXF1ZSh0cnVlKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbHM+IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCit7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9scz4gY29udHJvbHMgPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9scyhtZWRpYUVsZW1lbnQpKTsKKworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50
OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVk
aWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAg
Y29udHJvbHMtPm1fcmV3aW5kQnV0dG9uID0gcmV3aW5kQnV0dG9uLmdldCgpOworICAgIHBhbmVs
LT5hcHBlbmRDaGlsZChyZXdpbmRCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50Ojpj
cmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1
dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uID0gTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3JldHVyblRvUmVhbFRpbWVCdXR0
b24gPSByZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGls
ZChyZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobWVkaWFFbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAg
ICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNw
bGF5ID0gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1l
bnQpOworICAgICAgICBjb250cm9scy0+bV9zdGF0dXNEaXNwbGF5ID0gc3RhdHVzRGlzcGxheS5n
ZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHN0YXR1c0Rpc3BsYXkucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IHRp
bWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUobWVkaWFFbGVtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50
VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBjb250cm9scy0+
bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgdGlt
ZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBj
b250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVsaW5lQ29udGFp
bmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1h
aW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIGNv
bnRyb2xzLT5tX3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkuZ2V0
KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdEaXNw
bGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVy
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0aW1lbGluZUNvbnRhaW5lci5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8g
RklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYz
PgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtCYWNr
QnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFF
bGVtZW50KTsKKyAgICBjb250cm9scy0+bV9zZWVrQmFja0J1dHRvbiA9IHNlZWtCYWNrQnV0dG9u
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrQmFja0J1dHRvbi5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gRklY
TUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IHNlZWtGb3J3
YXJkQnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpjcmVhdGUo
bWVkaWFFbGVtZW50KTsKKyAgICBjb250cm9scy0+bV9zZWVrRm9yd2FyZEJ1dHRvbiA9IHNlZWtG
b3J3YXJkQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrRm9yd2FyZEJ1
dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworCisgICAgaWYgKG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5z
dXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9s
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKG1lZGlhRWxlbWVudCk7CisgICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAgIHBh
bmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzU3MTYzPgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVu
dD4gZnVsbFNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
OjpjcmVhdGUobWVkaWFFbGVtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1f
ZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxTY3JlZW5CdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFw
cGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0dG9u
ID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVu
dCwgY29udHJvbHMuZ2V0KCkpOworICAgIGNvbnRyb2xzLT5tX3BhbmVsTXV0ZUJ1dHRvbiA9IHBh
bmVsTXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0
dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAobWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnVz
ZXNNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXIoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0g
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCk7CisKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+
IHNsaWRlciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVs
ZW1lbnQpOworICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7
CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1l
bnQ+IHZvbHVtZVNsaWRlck11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgICAgIGNvbnRyb2xzLT5t
X3ZvbHVtZVNsaWRlck11dGVCdXR0b24gPSB2b2x1bWVTbGlkZXJNdXRlQnV0dG9uLmdldCgpOwor
ICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHZvbHVtZVNsaWRlck11
dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlckNvbnRhaW5l
ciA9IHZvbHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHZvbHVtZVNsaWRlckNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAg
aWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gRklYTUU6IE9u
bHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgorICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gZnVsbFNj
cmVlbk1pblZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2Ny
ZWVuTWluVm9sdW1lQnV0dG9uID0gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBmdWxsU2NyZWVuVm9s
dW1lU2xpZGVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNy
ZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5Wb2x1bWVTbGlk
ZXIgPSBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGls
ZChmdWxsU2NyZWVuVm9sdW1lU2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24gPSBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IGZ1bGxT
Y3JlZW5NYXhWb2x1bWVCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxT
Y3JlZW5NYXhWb2x1bWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3BhbmVsID0gcGFuZWwuZ2V0KCk7
CisgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKHBhbmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29udHJvbHMucmVs
ZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnNob3coKQoreworICAgIG1fcGFuZWwt
PnNob3coKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlKCkKK3sKKyAgICBtX3BhbmVs
LT5oaWRlKCk7Cit9CisKK3N0YXRpYyBjb25zdCBTdHJpbmcmIHdlYmtpdFRyYW5zaXRpb25TdHJp
bmcoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzLCAoIi13ZWJraXQtdHJh
bnNpdGlvbiIpKTsKKyAgICByZXR1cm4gczsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyYgb3Bh
Y2l0eVN0cmluZygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHMsICgib3Bh
Y2l0eSIpKTsKKyAgICByZXR1cm4gczsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjptYWtlT3Bh
cXVlKCkKK3sKKyAgICBpZiAobV9vcGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0cmFuc2l0aW9uVmFsdWUsICgpKTsKKyAgICBpZiAodHJh
bnNpdGlvblZhbHVlLmlzTnVsbCgpKQorICAgICAgICB0cmFuc2l0aW9uVmFsdWUgPSBTdHJpbmc6
OmZvcm1hdCgib3BhY2l0eSAlLjFncyIsIGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVk
aWFDb250cm9sc0ZhZGVJbkR1cmF0aW9uKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBvcGFjaXR5VmFsdWUsICgiMSIpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
Ly8gRklYTUU6IE1ha2UgbW9yZSBlZmZpY2llbnQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTgxNTc+
CisgICAgbV9wYW5lbC0+c3R5bGUoKS0+c2V0UHJvcGVydHkod2Via2l0VHJhbnNpdGlvblN0cmlu
ZygpLCB0cmFuc2l0aW9uVmFsdWUsIGVjKTsKKyAgICBtX3BhbmVsLT5zdHlsZSgpLT5zZXRQcm9w
ZXJ0eShvcGFjaXR5U3RyaW5nKCksIG9wYWNpdHlWYWx1ZSwgZWMpOworICAgIG1fb3BhcXVlID0g
dHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQoKQoreworICAg
IGlmICghbV9vcGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCB0cmFuc2l0aW9uVmFsdWUsICgpKTsKKyAgICBpZiAodHJhbnNpdGlvblZhbHVl
LmlzTnVsbCgpKQorICAgICAgICB0cmFuc2l0aW9uVmFsdWUgPSBTdHJpbmc6OmZvcm1hdCgib3Bh
Y2l0eSAlLjFncyIsIGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0Zh
ZGVPdXREdXJhdGlvbigpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3BhY2l0
eVZhbHVlLCAoIjAiKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIC8vIEZJWE1FOiBN
YWtlIG1vcmUgZWZmaWNpZW50IDxodHRwOi8vd2Via2l0Lm9yZy9iLzU4MTU3PgorICAgIG1fcGFu
ZWwtPnN0eWxlKCktPnNldFByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25TdHJpbmcoKSwgdHJhbnNp
dGlvblZhbHVlLCBlYyk7CisgICAgbV9wYW5lbC0+c3R5bGUoKS0+c2V0UHJvcGVydHkob3BhY2l0
eVN0cmluZygpLCBvcGFjaXR5VmFsdWUsIGVjKTsKKyAgICBtX29wYXF1ZSA9IGZhbHNlOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2hh
bmdlZE5ldHdvcmtTdGF0ZSgpOworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnQt
PmR1cmF0aW9uKCk7CisgICAgaWYgKCFpc25hbihkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+
aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICAg
ICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgICAgICBtX3RpbWVsaW5l
Q29udGFpbmVyLT5zaG93KCk7CisgICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVk
aWFFbGVtZW50LT5jdXJyZW50VGltZSgpKTsKKyAgICAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworCisgICAg
aWYgKG1fbWVkaWFFbGVtZW50LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkKKyAgICAgICAgbV9w
YW5lbE11dGVCdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFuZWxNdXRlQnV0
dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXIpCisgICAgICAgIG1fdm9sdW1l
U2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpKTsKKworICAgIGlmICht
X3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhRWxlbWVu
dC0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0KKworICAgIGlmIChtX21lZGlhRWxlbWVu
dC0+bW92aWVMb2FkVHlwZSgpICE9IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKSB7CisgICAgICAg
IG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOworICAgICAgICBtX3Jld2luZEJ1dHRv
bi0+c2hvdygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRv
bi0+c2hvdygpOworICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAgIH0KKworICAg
IG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0YXJ0ZWQo
KQoreworICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVs
aW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CisgICAgdXBk
YXRlVGltZURpc3BsYXkoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1Byb2dy
ZXNzZWQoKQoreworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50LT5j
dXJyZW50VGltZSgpKTsKKyAgICB1cGRhdGVUaW1lRGlzcGxheSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCit7CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVE
aXNwbGF5VHlwZSgpOworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50
LT5jdXJyZW50VGltZSgpKTsKKyAgICB1cGRhdGVUaW1lRGlzcGxheSgpOworICAgIG1ha2VPcGFx
dWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjp1cGRhdGVUaW1lRGlzcGxheSgpCit7Cisg
ICAgZmxvYXQgbm93ID0gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQg
ZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50
aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVj
KTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAg
bV90aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1h
dE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV90
aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzOjpyZXBvcnRlZEVycm9yKCkKK3sKKyAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFTbGlkZXJQYXJ0KSkKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwor
CisgICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3Io
TWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7
CisKKyAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVT
bGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7
CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBhZ2UtPnRoZW1lKCkt
Pmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uUGFydCkpCisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUo
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTmV0d29ya1N0YXRlKCkKK3sKKyAg
ICAvLyBGSVhNRTogV2h5IGFyZSB3ZSBjaGFuZ2luZyBmdWxsc2NyZWVuIGJ1dHRvbiB2aXNpYmls
aXR5IGhlcmU/IDxodHRwOi8vd2Via2l0Lm9yZy9iLzU4MTYzPgorICAgIGlmIChtX21lZGlhRWxl
bWVudC0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+
c2hvdygpOworICAgIGVsc2UKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisK
KyAgICBpZiAobV9zdGF0dXNEaXNwbGF5KQorICAgICAgICBtX3N0YXR1c0Rpc3BsYXktPnVwZGF0
ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFkYXRhKCkKK3sKKyAgICBp
ZiAobV9zdGF0dXNEaXNwbGF5KQorICAgICAgICBtX3N0YXR1c0Rpc3BsYXktPmhpZGUoKTsKKwor
ICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdlZENsb3NlZENhcHRp
b25zVmlzaWJpbGl0eSgpCit7CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24p
CisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBl
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUoKQoreworICAgIG1fcGFu
ZWxNdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVC
dXR0b24pCisgICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11dGUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkVm9sdW1lKCkKK3sKKyAgICBpZiAobV92
b2x1bWVTbGlkZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUVs
ZW1lbnQtPnZvbHVtZSgpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjplbnRlcmVkRnVsbHNj
cmVlbigpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVk
aWFQbGF5ZXI6OkxpdmVTdHJlYW0gfHwgbV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9
PSBNZWRpYVBsYXllcjo6U3RvcmVkU3RyZWFtKSB7CisgICAgICAgIG1fc2Vla0JhY2tCdXR0b24t
PmhpZGUoKTsKKyAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+aGlkZSgpOworICAgIH0gZWxz
ZQorICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJv
bHM6OmV4aXRlZEZ1bGxzY3JlZW4oKQoreworICAgIC8vICJzaG93IiBhY3R1YWxseSBtZWFucyBy
ZW1vdmFsIG9mIGRpc3BsYXk6bm9uZSBzdHlsZSwgc28gd2UgYXJlIGp1c3QgY2xlYXJpbmcgc3R5
bGVzCisgICAgLy8gd2hlbiBleGl0aW5nIGZ1bGxzY3JlZW4uCisgICAgLy8gRklYTUU6IENsYXJp
ZnkgbmFtaW5nIG9mIHNob3cvaGlkZSA8aHR0cDovL3dlYmtpdC5vcmcvYi81ODE1Nz4KKyAgICBt
X3Jld2luZEJ1dHRvbi0+c2hvdygpOworICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKKyAg
ICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6
c2hvd1ZvbHVtZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aGFzQXVkaW8o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQor
ICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbHM6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scyIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFJvb3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIk1lZGlh
Q29udHJvbHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgpAQCAtNDcs
NyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLU1lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQorTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50
KGRpdlRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9tZWRpYUVsZW1lbnQo
bWVkaWFFbGVtZW50KQogICAgICwgbV9yZXdpbmRCdXR0b24oMCkKQEAgLTc0LDEyICs3NCwxMiBA
QCBNZWRpYUNvbnRyb2xzOjpNZWRpYUNvbnRyb2xzKEhUTUxNZWRpYUVsCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQogewogICAgIGlmICghbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNvbnRyb2xzID0gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbHMobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50PiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xS
b290RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKIAogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5l
bEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUobWVkaWFF
bGVtZW50KTsKIApAQCAtMjE3LDEyICsyMTcsMTIgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xz
PiBNZWRpYUNvbnRyb2xzOgogICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgTWVkaWFDb250cm9sczo6c2hvdygpCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpz
aG93KCkKIHsKICAgICBtX3BhbmVsLT5zaG93KCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6
aGlkZSgpCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpoaWRlKCkKIHsKICAgICBtX3Bh
bmVsLT5oaWRlKCk7CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyYg
b3BhY2l0eVN0cmluZygpCiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6
bWFrZU9wYXF1ZSgpCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjptYWtlT3BhcXVlKCkK
IHsKICAgICBpZiAobV9vcGFxdWUpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Niw3ICsyNTYsNyBA
QCB2b2lkIE1lZGlhQ29udHJvbHM6Om1ha2VPcGFxdWUoKQogICAgIG1fb3BhcXVlID0gdHJ1ZTsK
IH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQoKQordm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKIHsKICAgICBpZiAoIW1fb3BhcXVl
KQogICAgICAgICByZXR1cm47CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xz
OjptYWtlVHJhbnNwYXJlbnQoKQogICAgIG1fb3BhcXVlID0gZmFsc2U7CiB9CiAKLXZvaWQgTWVk
aWFDb250cm9sczo6cmVzZXQoKQordm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQo
KQogewogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdl
KQpAQCAtMzE1LDIwICszMTUsMjAgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpyZXNldCgpCiAgICAg
bWFrZU9wYXF1ZSgpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RhcnRlZCgp
Cit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQoKQogewogICAg
IG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKICAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CiAgICAgdXBkYXRlVGltZURp
c3BsYXkoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1Byb2dyZXNzZWQoKQor
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKICAg
ICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7
CiAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpwbGF5
YmFja1N0b3BwZWQoKQordm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tTdG9w
cGVkKCkKIHsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAgICAgbV90
aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOwpAQCAt
MzM2LDcgKzMzNiw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6cGxheWJhY2tTdG9wcGVkKCkKICAg
ICBtYWtlT3BhcXVlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlVGltZURpc3Bs
YXkoKQordm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGltZURpc3BsYXkoKQog
ewogICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpOwogICAgIGZs
b2F0IGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7CkBAIC0zNTMsNyArMzUz
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjp1cGRhdGVUaW1lRGlzcGxheSgpCiAgICAgbV90aW1l
UmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKIH0KIAot
dm9pZCBNZWRpYUNvbnRyb2xzOjpyZXBvcnRlZEVycm9yKCkKK3ZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OnJlcG9ydGVkRXJyb3IoKQogewogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgTWVkaWFD
b250cm9sczo6cmVwb3J0ZWRFcnJvcigpCiAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24tPmhpZGUoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTmV0d29ya1N0
YXRlKCkKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWROZXR3b3JrU3RhdGUo
KQogewogICAgIC8vIEZJWE1FOiBXaHkgYXJlIHdlIGNoYW5naW5nIGZ1bGxzY3JlZW4gYnV0dG9u
IHZpc2liaWxpdHkgaGVyZT8gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTgxNjM+CiAgICAgaWYgKG1f
bWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkKQEAgLTM4NSw3ICszODUsNyBAQCB2
b2lkIE1lZGlhQ29udHJvbHM6OmNoYW5nZWROZXR3b3JrU3RhdGUoCiAgICAgICAgIG1fc3RhdHVz
RGlzcGxheS0+dXBkYXRlKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6bG9hZGVkTWV0YWRh
dGEoKQordm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6bG9hZGVkTWV0YWRhdGEoKQogewog
ICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkpCiAgICAgICAgIG1fc3RhdHVzRGlzcGxheS0+aGlkZSgp
OwpAQCAtMzkzLDI2ICszOTMsMjYgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpsb2FkZWRNZXRhZGF0
YSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkQ2xvc2Vk
Q2FwdGlvbnNWaXNpYmlsaXR5KCkKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5n
ZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHkoKQogewogICAgIGlmIChtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uKQogICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT51cGRh
dGVEaXNwbGF5VHlwZSgpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbHM6OmNoYW5nZWRNdXRlKCkK
K3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWRNdXRlKCkKIHsKICAgICBtX3Bh
bmVsTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11dGUoKTsKICAgICBpZiAobV92b2x1bWVTbGlkZXJNdXRl
QnV0dG9uKQogICAgICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24tPmNoYW5nZWRNdXRlKCk7
CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVtZSgpCit2b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpjaGFuZ2VkVm9sdW1lKCkKIHsKICAgICBpZiAobV92b2x1bWVTbGlk
ZXIpCiAgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUVsZW1lbnQtPnZv
bHVtZSgpKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjplbnRlcmVkRnVsbHNjcmVlbigpCit2
b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjplbnRlcmVkRnVsbHNjcmVlbigpCiB7CiAgICAg
aWYgKG1fbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVT
dHJlYW0gfHwgbV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6
U3RvcmVkU3RyZWFtKSB7CiAgICAgICAgIG1fc2Vla0JhY2tCdXR0b24tPmhpZGUoKTsKQEAgLTQy
MSw3ICs0MjEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKCkKICAg
ICAgICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKIH0KIAotdm9pZCBNZWRpYUNvbnRyb2xzOjpl
eGl0ZWRGdWxsc2NyZWVuKCkKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmV4aXRlZEZ1
bGxzY3JlZW4oKQogewogICAgIC8vICJzaG93IiBhY3R1YWxseSBtZWFucyByZW1vdmFsIG9mIGRp
c3BsYXk6bm9uZSBzdHlsZSwgc28gd2UgYXJlIGp1c3QgY2xlYXJpbmcgc3R5bGVzCiAgICAgLy8g
d2hlbiBleGl0aW5nIGZ1bGxzY3JlZW4uCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzOjpleGl0ZWRGdWxsc2NyZWVuKCkKICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93
KCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sczo6c2hvd1ZvbHVtZVNsaWRlcigpCit2b2lkIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzaG93Vm9sdW1lU2xpZGVyKCkKIHsKICAgICBpZiAoIW1f
bWVkaWFFbGVtZW50LT5oYXNBdWRpbygpKQogICAgICAgICByZXR1cm47CkBAIC00NDAsNyArNDQw
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpzaG93Vm9sdW1lU2xpZGVyKCkKICAgICAgICAgbV92
b2x1bWVTbGlkZXJDb250YWluZXItPnNob3coKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xzOjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMiKSk7CiAgICAgcmV0dXJuIGlkOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oCShyZXZpc2lvbiA4MzQ2MCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oOjgzNDYwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhQ29udHJvbHNfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xzX2gKKworI2lm
IEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgSFRN
TE1lZGlhRWxlbWVudDsKK2NsYXNzIEV2ZW50OworY2xhc3MgTWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OworY2xh
c3MgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRv
bkVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OworY2xh
c3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sVGltZVJl
bWFpbmluZ0Rpc3BsYXlFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OworY2xhc3Mg
TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sU3RhdHVz
RGlzcGxheUVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ7CitjbGFzcyBNZWRp
YUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xNdXRl
QnV0dG9uRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ7Citj
bGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDsKK2NsYXNzIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ7
CitjbGFzcyBNZWRpYVBsYXllcjsKKworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyTWVk
aWE7CisKKy8vIEZJWE1FOiBSZW5hbWUgdG8gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuCitjbGFz
cyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCop
OworCisgICAgdm9pZCBzaG93KCk7CisgICAgdm9pZCBoaWRlKCk7CisgICAgdm9pZCBtYWtlT3Bh
cXVlKCk7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAgIHZvaWQgcmVzZXQoKTsK
KworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCk7CisgICAgdm9pZCBwbGF5YmFja1N0YXJ0
ZWQoKTsKKyAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpOworCisgICAgdm9pZCBjaGFuZ2VkTXV0
ZSgpOworICAgIHZvaWQgY2hhbmdlZFZvbHVtZSgpOworCisgICAgdm9pZCBlbnRlcmVkRnVsbHNj
cmVlbigpOworICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOworCisgICAgdm9pZCByZXBvcnRl
ZEVycm9yKCk7CisgICAgdm9pZCBjaGFuZ2VkTmV0d29ya1N0YXRlKCk7CisgICAgdm9pZCBsb2Fk
ZWRNZXRhZGF0YSgpOworICAgIHZvaWQgY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgp
OworCisgICAgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCk7CisgICAgdm9pZCB1cGRhdGVUaW1lRGlz
cGxheSgpOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbHMoSFRNTE1lZGlhRWxlbWVudCop
OworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3Q7CisKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKKworICAgIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQqIG1fcmV3aW5kQnV0dG9uOworICAgIE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50KiBtX3BsYXlCdXR0b247CisgICAgTWVkaWFDb250cm9sUmV0
dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQqIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbjsKKyAg
ICBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCogbV9zdGF0dXNEaXNwbGF5OworICAg
IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQqIG1fY3VycmVudFRpbWVEaXNw
bGF5OworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCogbV90aW1lbGluZTsKKyAgICBN
ZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fdGltZVJlbWFpbmluZ0Rp
c3BsYXk7CisgICAgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KiBtX3RpbWVs
aW5lQ29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCogbV9z
ZWVrQmFja0J1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQq
IG1fc2Vla0ZvcndhcmRCdXR0b247CisgICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50KiBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uOworICAgIE1lZGlh
Q29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQqIG1fcGFuZWxNdXRlQnV0dG9uOworICAgIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyOworICAgIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KiBtX3ZvbHVtZVNsaWRlck11dGVC
dXR0b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCogbV92
b2x1bWVTbGlkZXJDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQqIG1fZnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWluQnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5Wb2x1
bWVTbGlkZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQqIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQqIG1fcGFuZWw7CisKKyAgICBib29sIG1fb3BhcXVlOworfTsKKworaW5saW5lIE1lZGlh
Q29udHJvbHMqIHRvTWVkaWFDb250cm9scyhOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2Rl
LT5pc0hUTUxFbGVtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xz
Kj4obm9kZSk7Cit9CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaAkocmV2aXNp
b24gODM0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsOSBAQCBjbGFzcyBNZWRpYVBs
YXllcjsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJlbmRlck1lZGlhOwogCi0vLyBGSVhNRTog
UmVuYW1lIHRvIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LgotY2xhc3MgTWVkaWFDb250cm9scyA6
IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitjbGFzcyBNZWRpYUNvbnRyb2xSb290RWxlbWVudCA6
IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9scz4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKIAogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgaGlkZSgpOwpAQCAtOTksNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVUaW1lRGlzcGxheSgpOwogCiBwcml2YXRlOgotICAg
IE1lZGlhQ29udHJvbHMoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCkBAIC0xMjksMTAgKzEyOCwxMCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9vcGFxdWU7CiB9OwogCi1pbmxpbmUgTWVkaWFDb250cm9scyogdG9N
ZWRpYUNvbnRyb2xzKE5vZGUqIG5vZGUpCitpbmxpbmUgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQq
IHRvTWVkaWFDb250cm9scyhOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5pc0hUTUxF
bGVtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xzKj4obm9kZSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kj4obm9kZSk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuY3BwCShyZXZpc2lvbiA4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShWSURF
TykKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCi0KLSNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKLSNpbmNsdWRlICJNb3VzZUV2ZW50Lmgi
Ci0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgotCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotTWVkaWFDb250cm9sczo6
TWVkaWFDb250cm9scyhIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBIVE1M
RGl2RWxlbWVudChkaXZUYWcsIG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fbWVk
aWFFbGVtZW50KG1lZGlhRWxlbWVudCkKLSAgICAsIG1fcmV3aW5kQnV0dG9uKDApCi0gICAgLCBt
X3BsYXlCdXR0b24oMCkKLSAgICAsIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbigwKQotICAgICwg
bV9zdGF0dXNEaXNwbGF5KDApCi0gICAgLCBtX2N1cnJlbnRUaW1lRGlzcGxheSgwKQotICAgICwg
bV90aW1lbGluZSgwKQotICAgICwgbV90aW1lUmVtYWluaW5nRGlzcGxheSgwKQotICAgICwgbV90
aW1lbGluZUNvbnRhaW5lcigwKQotICAgICwgbV9zZWVrQmFja0J1dHRvbigwKQotICAgICwgbV9z
ZWVrRm9yd2FyZEJ1dHRvbigwKQotICAgICwgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbigw
KQotICAgICwgbV9wYW5lbE11dGVCdXR0b24oMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyKDApCi0g
ICAgLCBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24oMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyQ29u
dGFpbmVyKDApCi0gICAgLCBtX2Z1bGxTY3JlZW5CdXR0b24oMCkKLSAgICAsIG1fZnVsbFNjcmVl
bk1pblZvbHVtZUJ1dHRvbigwKQotICAgICwgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKDApCi0g
ICAgLCBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24oMCkKLSAgICAsIG1fcGFuZWwoMCkKLSAg
ICAsIG1fb3BhcXVlKHRydWUpCi17Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVk
aWFDb250cm9sczo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAg
ICBpZiAoIW1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzPiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xzKG1lZGlhRWxlbWVudCkpOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZShtZWRp
YUVsZW1lbnQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24gPSBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKLSAgICBjb250cm9scy0+bV9y
ZXdpbmRCdXR0b24gPSByZXdpbmRCdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxk
KHJld2luZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBw
bGF5QnV0dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVs
ZW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdldCgpOwot
ICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
UmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IHJldHVyblRvUmVhbHRpbWVCdXR0b24gPSBN
ZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCk7Ci0gICAgY29udHJvbHMtPm1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVyblRv
UmVhbHRpbWVCdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHJldHVyblRvUmVh
bHRpbWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGlmIChtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhl
bWUoKS0+dXNlc01lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXkoKSkgewotICAgICAgICBSZWZQdHI8
TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNv
bnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7Ci0gICAgICAg
IGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwotICAgICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
LSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVm
UHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gdGltZWxpbmVDb250YWlu
ZXIgPSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVs
ZW1lbnQpOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1l
bnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVs
ZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1l
RGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsKLSAgICB0aW1lbGluZUNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6
Y3JlYXRlKG1lZGlhRWxlbWVudCwgY29udHJvbHMuZ2V0KCkpOwotICAgIGNvbnRyb2xzLT5tX3Rp
bWVsaW5lID0gdGltZWxpbmUuZ2V0KCk7Ci0gICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENo
aWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50PiB0aW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdE
aXNwbGF5RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7Ci0gICAgY29udHJvbHMtPm1fdGlt
ZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKLSAgICB0aW1l
bGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnRy
b2xzLT5tX3RpbWVsaW5lQ29udGFpbmVyID0gdGltZWxpbmVDb250YWluZXIuZ2V0KCk7Ci0gICAg
cGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogT25seSBj
cmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVmUHRy
PE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gc2Vla0JhY2tCdXR0b24gPSBNZWRp
YUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOwotICAg
IGNvbnRyb2xzLT5tX3NlZWtCYWNrQnV0dG9uID0gc2Vla0JhY2tCdXR0b24uZ2V0KCk7Ci0gICAg
cGFuZWwtPmFwcGVuZENoaWxkKHNlZWtCYWNrQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogT25seSBjcmVh
dGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0ZvcndhcmRCdXR0b24gPSBN
ZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQp
OwotICAgIGNvbnRyb2xzLT5tX3NlZWtGb3J3YXJkQnV0dG9uID0gc2Vla0ZvcndhcmRCdXR0b24u
Z2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHNlZWtGb3J3YXJkQnV0dG9uLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
bWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2Vk
Q2FwdGlvbmluZygpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVt
ZW50KTsKLSAgICAgICAgY29udHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKLSAgICAgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAg
ICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogT25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVu
QnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRp
YUVsZW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKLSAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0
dG9uID0gZnVsbFNjcmVlbkJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVs
bFNjcmVlbkJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50LCBjb250cm9scy5n
ZXQoKSk7Ci0gICAgY29udHJvbHMtPm1fcGFuZWxNdXRlQnV0dG9uID0gcGFuZWxNdXRlQnV0dG9u
LmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICht
ZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJv
bFZvbHVtZVNsaWRlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKLQotICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7Ci0gICAg
ICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQoKTsKLSAgICAgICAgdm9s
dW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gdm9sdW1lU2xp
ZGVyTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50
OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKLSAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVy
TXV0ZUJ1dHRvbiA9IHZvbHVtZVNsaWRlck11dGVCdXR0b24uZ2V0KCk7Ci0gICAgICAgIHZvbHVt
ZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gdm9sdW1lU2xp
ZGVyQ29udGFpbmVyLmdldCgpOwotICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1lU2xp
ZGVyQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hl
biBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWluVm9sdW1l
QnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShtZWRpYUVsZW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5NaW5Wb2x1bWVC
dXR0b24gPSBmdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLmdldCgpOwotICAgIHBhbmVsLT5hcHBl
bmRDaGlsZChmdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCk7Ci0gICAgY29udHJvbHMtPm1fZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IGZ1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXIuZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5W
b2x1bWVTbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudD4gZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKLSAgICBj
b250cm9scy0+bV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uID0gZnVsbFNjcmVlbk1heFZvbHVt
ZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlbk1heFZvbHVt
ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgY29udHJvbHMtPm1fcGFuZWwgPSBwYW5lbC5nZXQoKTsKLSAgICBjb250cm9s
cy0+YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sczo6c2hvdygpCi17Ci0gICAgbV9wYW5lbC0+c2hvdygpOwotfQot
Ci12b2lkIE1lZGlhQ29udHJvbHM6OmhpZGUoKQotewotICAgIG1fcGFuZWwtPmhpZGUoKTsKLX0K
LQotc3RhdGljIGNvbnN0IFN0cmluZyYgd2Via2l0VHJhbnNpdGlvblN0cmluZygpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHMsICgiLXdlYmtpdC10cmFuc2l0aW9uIikpOwot
ICAgIHJldHVybiBzOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5nJiBvcGFjaXR5U3RyaW5nKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcywgKCJvcGFjaXR5IikpOwotICAg
IHJldHVybiBzOwotfQotCi12b2lkIE1lZGlhQ29udHJvbHM6Om1ha2VPcGFxdWUoKQotewotICAg
IGlmIChtX29wYXF1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHRyYW5zaXRpb25WYWx1ZSwgKCkpOwotICAgIGlmICh0cmFuc2l0aW9uVmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgIHRyYW5zaXRpb25WYWx1ZSA9IFN0cmluZzo6Zm9ybWF0KCJvcGFj
aXR5ICUuMWdzIiwgZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFk
ZUluRHVyYXRpb24oKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9wYWNpdHlW
YWx1ZSwgKCIxIikpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAvLyBGSVhNRTogTWFr
ZSBtb3JlIGVmZmljaWVudCA8aHR0cDovL3dlYmtpdC5vcmcvYi81ODE1Nz4KLSAgICBtX3BhbmVs
LT5zdHlsZSgpLT5zZXRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uU3RyaW5nKCksIHRyYW5zaXRp
b25WYWx1ZSwgZWMpOwotICAgIG1fcGFuZWwtPnN0eWxlKCktPnNldFByb3BlcnR5KG9wYWNpdHlT
dHJpbmcoKSwgb3BhY2l0eVZhbHVlLCBlYyk7Ci0gICAgbV9vcGFxdWUgPSB0cnVlOwotfQotCi12
b2lkIE1lZGlhQ29udHJvbHM6Om1ha2VUcmFuc3BhcmVudCgpCi17Ci0gICAgaWYgKCFtX29wYXF1
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRy
YW5zaXRpb25WYWx1ZSwgKCkpOwotICAgIGlmICh0cmFuc2l0aW9uVmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIHRyYW5zaXRpb25WYWx1ZSA9IFN0cmluZzo6Zm9ybWF0KCJvcGFjaXR5ICUuMWdzIiwg
ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9u
KCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvcGFjaXR5VmFsdWUsICgiMCIp
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgLy8gRklYTUU6IE1ha2UgbW9yZSBlZmZp
Y2llbnQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTgxNTc+Ci0gICAgbV9wYW5lbC0+c3R5bGUoKS0+
c2V0UHJvcGVydHkod2Via2l0VHJhbnNpdGlvblN0cmluZygpLCB0cmFuc2l0aW9uVmFsdWUsIGVj
KTsKLSAgICBtX3BhbmVsLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShvcGFjaXR5U3RyaW5nKCksIG9w
YWNpdHlWYWx1ZSwgZWMpOwotICAgIG1fb3BhcXVlID0gZmFsc2U7Ci19Ci0KLXZvaWQgTWVkaWFD
b250cm9sczo6cmVzZXQoKQotewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFuZ2VkTmV0d29ya1N0
YXRlKCk7Ci0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsK
LSAgICBpZiAoIWlzbmFuKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxl
ZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgewotICAgICAgICBtX3RpbWVsaW5l
LT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNo
b3coKTsKLSAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCkpOwotICAgICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwotICAgIH0gZWxzZQot
ICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7Ci0KLSAgICBpZiAobV9tZWRpYUVs
ZW1lbnQtPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQotICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRv
bi0+c2hvdygpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsK
LQotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZv
bHVtZShtX21lZGlhRWxlbWVudC0+dm9sdW1lKCkpOwotCi0gICAgaWYgKG1fdG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24pIHsKLSAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5oYXNDbG9zZWRD
YXB0aW9ucygpKQotICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2hv
dygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRU
eXBlKCkgIT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pIHsKLSAgICAgICAgbV9yZXR1cm5Ub1Jl
YWxUaW1lQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7Ci0g
ICAgICAgIG1fcmV3aW5kQnV0dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgbWFrZU9wYXF1ZSgp
OwotfQotCi12b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RhcnRlZCgpCi17Ci0gICAgbV9w
bGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0
aW9uKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlzcGxh
eSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCi17Ci0g
ICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkp
OwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sczo6cGxh
eWJhY2tTdG9wcGVkKCkKLXsKLSAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7
Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1l
KCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgbWFrZU9wYXF1ZSgpOwotfQotCi12
b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZVRpbWVEaXNwbGF5KCkKLXsKLSAgICBmbG9hdCBub3cg
PSBtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1f
bWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwotCi0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFsbG93
IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1h
dE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0aW9uKSwgZWMpOwotICAgIG1fY3Vy
cmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsKLSAgICBtX3RpbWVSZW1haW5p
bmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9s
c1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKLSAgICBtX3RpbWVSZW1haW5pbmdE
aXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbHM6OnJlcG9ydGVkRXJyb3IoKQotewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBh
cnQpKQotICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7Ci0KLSAgICBpZiAoIXBh
Z2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0
b25QYXJ0KSkKLSAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKLQotICAgICBtX2Z1
bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKLQotICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
cikKLSAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKLSAgICBpZiAobV90
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJs
ZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkK
LSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbHM6OmNoYW5nZWROZXR3b3JrU3RhdGUoKQotewotICAgIC8vIEZJWE1FOiBX
aHkgYXJlIHdlIGNoYW5naW5nIGZ1bGxzY3JlZW4gYnV0dG9uIHZpc2liaWxpdHkgaGVyZT8gPGh0
dHA6Ly93ZWJraXQub3JnL2IvNTgxNjM+Ci0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKLQotICAgIGlmIChtX3N0
YXR1c0Rpc3BsYXkpCi0gICAgICAgIG1fc3RhdHVzRGlzcGxheS0+dXBkYXRlKCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sczo6bG9hZGVkTWV0YWRhdGEoKQotewotICAgIGlmIChtX3N0YXR1c0Rp
c3BsYXkpCi0gICAgICAgIG1fc3RhdHVzRGlzcGxheS0+aGlkZSgpOwotCi0gICAgcmVzZXQoKTsK
LX0KLQotdm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5
KCkKLXsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgbV9wYW5lbE11dGVCdXR0b24t
PmNoYW5nZWRNdXRlKCk7Ci0gICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKLSAgICAg
ICAgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbHM6OmNoYW5nZWRWb2x1bWUoKQotewotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikK
LSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhRWxlbWVudC0+dm9sdW1l
KCkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKCkKLXsKLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2
ZVN0cmVhbSB8fCBtX21lZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVy
OjpTdG9yZWRTdHJlYW0pIHsKLSAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOwotICAg
ICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5oaWRlKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
cmV3aW5kQnV0dG9uLT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sczo6ZXhpdGVkRnVs
bHNjcmVlbigpCi17Ci0gICAgLy8gInNob3ciIGFjdHVhbGx5IG1lYW5zIHJlbW92YWwgb2YgZGlz
cGxheTpub25lIHN0eWxlLCBzbyB3ZSBhcmUganVzdCBjbGVhcmluZyBzdHlsZXMKLSAgICAvLyB3
aGVuIGV4aXRpbmcgZnVsbHNjcmVlbi4KLSAgICAvLyBGSVhNRTogQ2xhcmlmeSBuYW1pbmcgb2Yg
c2hvdy9oaWRlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU4MTU3PgotICAgIG1fcmV3aW5kQnV0dG9u
LT5zaG93KCk7Ci0gICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOwotICAgIG1fc2Vla0Zvcndh
cmRCdXR0b24tPnNob3coKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xzOjpzaG93Vm9sdW1lU2xp
ZGVyKCkKLXsKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5oYXNBdWRpbygpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCi0gICAgICAgIG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFDb250cm9sczo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIikpOwotICAg
IHJldHVybiBpZDsKLX0KLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgJKHJldmlzaW9uIDgzNDYwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFDb250cm9sc19o
Ci0jZGVmaW5lIE1lZGlhQ29udHJvbHNfaAotCi0jaWYgRU5BQkxFKFZJREVPKQotCi0jaW5jbHVk
ZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MRWxlbWVudDsKLWNs
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgRXZl
bnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9u
RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBN
ZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29u
dHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ7Ci1j
bGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVs
ZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDsKLWNsYXNzIE1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9u
RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29u
dGFpbmVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1l
bnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDsK
LWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDsKLWNsYXNzIE1lZGlhUGxheWVyOwotCi1j
bGFzcyBSZW5kZXJCb3g7Ci1jbGFzcyBSZW5kZXJNZWRpYTsKLQotLy8gRklYTUU6IFJlbmFtZSB0
byBNZWRpYUNvbnRyb2xSb290RWxlbWVudC4KLWNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMg
SFRNTERpdkVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbHM+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2b2lkIHNob3coKTsKLSAg
ICB2b2lkIGhpZGUoKTsKLSAgICB2b2lkIG1ha2VPcGFxdWUoKTsKLSAgICB2b2lkIG1ha2VUcmFu
c3BhcmVudCgpOwotCi0gICAgdm9pZCByZXNldCgpOwotCi0gICAgdm9pZCBwbGF5YmFja1Byb2dy
ZXNzZWQoKTsKLSAgICB2b2lkIHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZvaWQgcGxheWJhY2tT
dG9wcGVkKCk7Ci0KLSAgICB2b2lkIGNoYW5nZWRNdXRlKCk7Ci0gICAgdm9pZCBjaGFuZ2VkVm9s
dW1lKCk7Ci0KLSAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0ZWRG
dWxsc2NyZWVuKCk7Ci0KLSAgICB2b2lkIHJlcG9ydGVkRXJyb3IoKTsKLSAgICB2b2lkIGNoYW5n
ZWROZXR3b3JrU3RhdGUoKTsKLSAgICB2b2lkIGxvYWRlZE1ldGFkYXRhKCk7Ci0gICAgdm9pZCBj
aGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7Ci0KLSAgICB2b2lkIHNob3dWb2x1bWVT
bGlkZXIoKTsKLSAgICB2b2lkIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0KLXByaXZhdGU6Ci0gICAg
TWVkaWFDb250cm9scyhIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLQotICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1fbWVkaWFFbGVtZW50OwotCi0gICAgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dCogbV9yZXdpbmRCdXR0b247Ci0gICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIG1f
cGxheUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dCogbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3Bs
YXlFbGVtZW50KiBtX3N0YXR1c0Rpc3BsYXk7Ci0gICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGltZURpc3BsYXk7Ci0gICAgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50KiBtX3RpbWVsaW5lOwotICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdE
aXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsKLSAgICBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxpbmVDb250YWluZXI7Ci0gICAgTWVkaWFD
b250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KiBtX3NlZWtCYWNrQnV0dG9uOwotICAgIE1lZGlh
Q29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudCogbV9zZWVrRm9yd2FyZEJ1dHRvbjsKLSAg
ICBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqIG1fdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudCogbV9wYW5lbE11dGVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudCogbV92b2x1bWVTbGlkZXI7Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbkVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKLSAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuQnV0dG9u
OwotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KiBtX2Z1
bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZVNsaWRlckVsZW1lbnQqIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcjsKLSAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWF4Vm9sdW1l
QnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCogbV9wYW5lbDsKLQotICAgIGJv
b2wgbV9vcGFxdWU7Ci19OwotCi1pbmxpbmUgTWVkaWFDb250cm9scyogdG9NZWRpYUNvbnRyb2xz
KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbHMqPihub2RlKTsKLX0KLQotfQotCi0jZW5k
aWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCisj
aW5jbHVkZSAiTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCkBA
IC0zNDYsMTMgKzM0NiwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50Ojp1
cGRhCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKK2lubGluZSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCwgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqIGNvbnRyb2xzKQogICAgIDogTWVkaWFDb250cm9s
TXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11dGVCdXR0b24pCiAgICAgLCBt
X2NvbnRyb2xzKGNvbnRyb2xzKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVs
TXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRy
b2xzKQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRp
YUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogY29udHJvbHMpCiB7CiAgICAg
QVNTRVJUKGNvbnRyb2xzKTsKIApAQCAtNjI2LDEzICs2MjYsMTMgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xUb2dnbGVDbAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLU1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9scyogY29u
dHJvbHMpCitNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5l
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50KiBjb250cm9scykKICAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVs
ZW1lbnQsIE1lZGlhU2xpZGVyKQogICAgICwgbV9jb250cm9scyhjb250cm9scykKIHsKIH0KIAot
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVs
aW5lRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFD
b250cm9scyogY29udHJvbHMpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dD4gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogY29udHJvbHMpCiB7CiAgICAg
QVNTRVJUKGNvbnRyb2xzKTsKIApAQCAtNzY3LDEzICs3NjcsMTMgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogY29u
dHJvbHMpCiAgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRp
YUZ1bGxzY3JlZW5CdXR0b24pCiAgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQogewogfQogCi1Q
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQqIGNvbnRyb2xzKQogewogICAgIEFTU0VSVChjb250cm9scyk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShy
ZXZpc2lvbiA4MzQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIE1lZGlhQ29udHJvbHM7
CitjbGFzcyBNZWRpYUNvbnRyb2xSb290RWxlbWVudDsKIAogLy8gTXVzdCBtYXRjaCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaAogZW51bSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSB7CkBAIC0xOTMs
MTUgKzE5MywxNSBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0
b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kik7CiAKIHByaXZhdGU6
Ci0gICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiwgTWVkaWFDb250cm9scyopOworICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCi0gICAgTWVkaWFDb250
cm9scyogbV9jb250cm9sczsKKyAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogbV9jb250cm9s
czsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyNSwxOCArMzI1
LDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1l
bnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwogICAgIHZvaWQgc2V0UG9zaXRpb24oZmxvYXQpOwogICAgIHZvaWQgc2V0RHVyYXRpb24o
ZmxvYXQpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5l
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owog
Ci0gICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKKyAgICBNZWRpYUNvbnRyb2xSb290RWxl
bWVudCogbV9jb250cm9sczsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTM1OSwxNiArMzU5LDE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
LCBNZWRpYUNvbnRyb2xzKik7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kik7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAotICAg
IE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CisgICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQq
IG1fY29udHJvbHM7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODM0NjIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDExLTA0LTExICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIE1lZGlh
Q29udHJvbHMgdG8gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI1MAorCisgICAgICAgICogcHVibGljL1dl
YkNvbnRleHRNZW51RGF0YS5oOgorICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKToKKwogMjAxMS0wNC0wNSAgSGFucyBXZW5uYm9yZyAgPGhhbnNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRh
LmgJKHJldmlzaW9uIDgzNDYwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29udGV4dE1lbnVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RydWN0
IFdlYkNvbnRleHRNZW51RGF0YSB7CiAgICAgICAgIE1lZGlhQ2FuU2F2ZSA9IDB4MTAsCiAgICAg
ICAgIE1lZGlhSGFzQXVkaW8gPSAweDIwLAogICAgICAgICBNZWRpYUhhc1ZpZGVvID0gMHg0MCwK
LSAgICAgICAgTWVkaWFDb250cm9scyA9IDB4ODAsCisgICAgICAgIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50ID0gMHg4MCwKICAgICAgICAgTWVkaWFDYW5QcmludCA9IDB4MTAwLAogICAgIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gODM0NjApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyAr
MjA2LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbgogICAgICAg
ICBpZiAobWVkaWFFbGVtZW50LT5oYXNWaWRlbygpKQogICAgICAgICAgICAgZGF0YS5tZWRpYUZs
YWdzIHw9IFdlYkNvbnRleHRNZW51RGF0YTo6TWVkaWFIYXNWaWRlbzsKICAgICAgICAgaWYgKG1l
ZGlhRWxlbWVudC0+Y29udHJvbHMoKSkKLSAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBX
ZWJDb250ZXh0TWVudURhdGE6Ok1lZGlhQ29udHJvbHM7CisgICAgICAgICAgICBkYXRhLm1lZGlh
RmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDsKICAg
ICB9IGVsc2UgaWYgKHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpvYmplY3RUYWcpCiAgICAgICAgICAgICAgICB8fCByLmlubmVyTm9uU2hhcmVkTm9kZSgpLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCog
b2JqZWN0ID0gci5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVuZGVyZXIoKTsKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNDYy
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTEtMDQtMTEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgTWVkaWFD
b250cm9scyB0byBNZWRpYUNvbnRyb2xSb290RWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjUwCisKKyAgICAgICAgKiBTY3JpcHRzL2Rv
LXdlYmNvcmUtcmVuYW1lOgorCiAyMDExLTA0LTExICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBUb29scy9T
Y3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZG8t
d2ViY29yZS1yZW5hbWUJKHJldmlzaW9uIDgzNDYwKQorKysgVG9vbHMvU2NyaXB0cy9kby13ZWJj
b3JlLXJlbmFtZQkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBzdWIgd2FudGVkCiBt
eSAkaXNET01UeXBlUmVuYW1lID0gMDsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBn
byBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJEb2NMb2FkZXIiID0+ICJDYWNoZWRSZXNvdXJj
ZUxvYWRlciIsCisgICAgIk1lZGlhQ29udHJvbHMiID0+ICJNZWRpYUNvbnRyb2xSb290RWxlbWVu
dCIsCiApOwogCiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgK
</data>
<flag name="review"
          id="81665"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="81750"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>