<?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>82853</bug_id>
          
          <creation_ts>2012-04-01 21:46:32 -0700</creation_ts>
          <short_desc>[GTK] Add filesystem API interface</short_desc>
          <delta_ts>2012-04-05 16:42:14 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>58443</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58443</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>593163</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-04-01 21:46:32 -0700</bug_when>
    <thetext>I&apos;ll add file system api interface for gtk port in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594487</commentid>
    <comment_count>1</comment_count>
      <attachid>135330</attachid>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-04-03 08:09:35 -0700</bug_when>
    <thetext>Created attachment 135330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594566</commentid>
    <comment_count>2</comment_count>
      <attachid>135330</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-03 09:43:21 -0700</bug_when>
    <thetext>Comment on attachment 135330
Patch

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

I am not sure I understand the rationale for creating these new classes? What problem are we trying to solve here? I don&apos;t like these empty shells tbh, I&apos;d rather have implementation of stuff in the patches, it makes it way easier to understand what&apos;s intended, what&apos;s being solved and so on.

&gt; Source/WebCore/ChangeLog:24
&gt; +        * platform/gtk/AsyncFileSystemCallbacksGtk.cpp: Added. This is an implement of AsyncFileSystemCallbacks.

implement -&gt; implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595152</commentid>
    <comment_count>3</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-04-03 19:24:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 135330 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135330&amp;action=review
&gt; 
&gt; I am not sure I understand the rationale for creating these new classes? What problem are we trying to solve here? I don&apos;t like these empty shells tbh, I&apos;d rather have implementation of stuff in the patches, it makes it way easier to understand what&apos;s intended, what&apos;s being solved and so on.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:24
&gt; &gt; +        * platform/gtk/AsyncFileSystemCallbacksGtk.cpp: Added. This is an implement of AsyncFileSystemCallbacks.
&gt; 
&gt; implement -&gt; implementation

Thanks for the review.
I think it&apos;s better to split the patch into some parts, since the full patch is too huge to understand.
Well, if you don&apos;t mind, I&apos;m willing to submit the full patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597019</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-05 16:42:14 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 58443 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135330</attachid>
            <date>2012-04-03 08:09:35 -0700</date>
            <delta_ts>2012-04-03 09:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82853-20120404000929.patch</filename>
            <type>text/plain</type>
            <size>37925</size>
            <attacher name="ChangSeok Oh">kevin.cs.oh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFmMzllMTI5MTc2YTEx
NTNmNjRiNGEzOWQyM2FhYTFkMjFhMDQ4Mi4uYmIzODZhZWQyMmJkNjBlNzJmZWE5NzQ0ZmJmMDgx
MDRlYjliOTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNC0wMyAgQ2hh
bmdTZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEZp
bGVTeXN0ZW0gQVBJIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODI4NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3Qgc3RlcCB0byBzdXBwb3J0IEZpbGVTeXN0ZW0g
QVBJIGZvciBndGsgcG9ydC4gVGhpcyBwYXRjaCBhZGRzCisgICAgICAgIG5ldyBpbnRlcmZhY2Vz
IGxpa2UgQXN5bmNGaWxlU3lzdGVtR3RrLCBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGssCisg
ICAgICAgIEFzeW5jRmlsZVdyaXRlckd0aywgQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrIGFuZCBB
c3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ay4KKyAgICAgICAgVGhlc2UgYXJlIGNoaWxk
IGNsYXNzZXMgaW1wbGVtZW50aW5nIHRoZSBpbnRlcmZhY2VzIG9mIGVhY2ggcGFyZW50IGNsYXNz
ZXMgZXhjZXB0CisgICAgICAgIEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrLiBBc3lu
Y0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayBpcyBhIGhlbHBlciBjbGFzcy4KKyAgICAgICAg
SXQgcmV0YWlucyBzb21lIHVzZWZ1bCB2YXJpYWJsZXMsIGFuZCBjb250cm9scyBwb3N0aW5nIHRh
c2tzIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgd2hpY2ggbWlnaHQgYmUgZWl0
aGVyIGEgRG9jdW1lbnQgb2JqZWN0IG9yIGEgV29ya2VyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgdW5jb21wbGV0ZWQuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOiBBZGRlZCBzb21lIGZpbGVzIHRvIGJ1aWxkIG5ld2x5IGZvciBGaWxlU3lz
dGVtLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZVN5c3RlbSk6IENy
ZWF0ZWQgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrIGluc3RlYWQgb2YgdXNpbmcgQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzIGl0c2VsZi4KKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsRmlsZVN5
c3RlbTo6cmVhZEZpbGVTeXN0ZW0pOiBBZGRlZCBtaXNzaW5nIGFyZ3VtZW50IG5hbWUuCisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKTogQWRkZWQg
bWlzc2luZyBhcmd1bWVudCBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3NHdGsuY3BwOiBBZGRlZC4gVGhpcyBpcyBhbiBpbXBsZW1lbnQgb2YgQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjo6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
R3RrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
R3RrOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGspOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpkaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0azo6ZGlkT3BlbkZpbGVTeXN0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpkaWRSZWFkTWV0YWRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpkaWRSZWFk
RGlyZWN0b3J5RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzR3RrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs6OmRpZENyZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpkaWRGYWlsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGspOgor
ICAgICAgICAoRGlyZWN0b3J5RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzR3RrOjpEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwOiBBZGRlZCBzb21lIG1pc3Np
bmcgQVBJcy4gVGhpcyBpcyBhIGNoaWxkIGNsYXNzIG9mIEFzeW5jRmlsZVN5c3RlbS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtR3RrOjpBc3luY0ZpbGVTeXN0ZW1HdGspOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtR3RrOjp+QXN5bmNGaWxlU3lzdGVtR3RrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVh
dGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlU25h
cHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5
c3RlbUd0azo6c2V0VGFza0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxl
U3lzdGVtR3RrOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY0ZpbGVTeXN0ZW1HdGs6OndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEFzeW5jRmlsZVN5c3RlbUd0ayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrLmNwcDogQWRkZWQuIFRoaXMgaXMgYSBo
ZWxwZXIgY2xhc3MgdG8gY29udHJvbCBwb3N0aW5nIHRhc2sgdG8gYSB0YXJnZXQgdGhyZWFkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1UYXNr
Q29udHJvbGxlckd0azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3Rl
bVRhc2tDb250cm9sbGVyR3RrOjpBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0azo6dW5pcXVl
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0
azo6cG9zdENhbGxiYWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1U
YXNrQ29udHJvbGxlckd0azo6cG9zdFRhc2tUb01haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGs6OnNldEN1cnJlbnRUYXNrTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0azo6d2Fp
dEZvck9wZXJhdGlvblRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lz
dGVtVGFza0NvbnRyb2xsZXJHdGs6OmNhbmNlbFdyaXRlcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9s
bGVyR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVy
R3RrOjp+QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGs6OnN5bmNocm9ub3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOjpzZXRXcml0ZXJU
b0NhbmNlbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0
ay5jcHA6IEFkZGVkLiBUaGlzIGlzIGEgY2hpbGQgY2xhc3MgaW1wbGVtZW50IG9mIEF5c25jRmls
ZVdyaXRlckNsaWVudC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlV3JpdGVyQ2xpZW50R3RrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNG
aWxlV3JpdGVyQ2xpZW50R3RrOjpBc3luY0ZpbGVXcml0ZXJDbGllbnRHdGspOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrOjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jRmlsZVdyaXRlckNsaWVudEd0azo6ZGlkVHJ1bmNhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrOjpkaWRXcml0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckNsaWVudEd0azo6fkFzeW5jRmlsZVdyaXRlckNsaWVu
dEd0ayk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJDbGllbnRHdGs6OnRhc2tD
b250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQXN5bmNGaWxlV3JpdGVyR3RrLmNw
cDogQWRkZWQuIFRoaXMgaXMgYSBjaGlsZCBjbGFzcyBvZiBBc3luY0ZpbGVXcml0ZXIuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckd0azo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckd0azo6QXN5bmNGaWxlV3Jp
dGVyR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckd0azo6d3JpdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyR3RrOjp0cnVuY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJHdGs6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jRmlsZVdyaXRlckd0azo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJHdGsuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEFzeW5jRmlsZVdyaXRlckd0ayk6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY0ZpbGVXcml0ZXJHdGs6On5Bc3luY0ZpbGVXcml0ZXJHdGspOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Mb2NhbEZpbGVTeXN0ZW1HdGsuY3BwOiBBZGRlZC4gU29tZSBwb3J0IHNwZWNp
ZmljIGZ1bmN0aW9ucyBhcmUgZXh0cmFjdGVkIGZyb20gTG9jYWxGaWxlU3lzdGVtLmNwcCBhbmQg
YWRkZWQgaW4gaGVyZS4gCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsRmlsZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSk6CisKIDIwMTItMDMtMjkgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiB1c2UgY2FudmFzIHRvIHJlbmRlciBiYXJzIGluICJ2ZXJ0aWNhbCBvdmVydmlldyIgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZmY4MTliM2I3ZjBiODFhZjkwOGQ0
NGMyMDAzNmY0ZGEzOWU1NmY2Yy4uMzExOGFjZjAzZWZlNmQ4Njg2ZTZlMmUwZTRhOGFmYTBiZjlk
ZTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NjY1LDYgKzQ2NjUsNyBA
QCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtWZXJzaW9uaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxGaWxlU3lz
dGVtR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmlu
Z3NHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xs
YmFyR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9s
bGJhckd0ay5oIFwKQEAgLTQ5NTgsOCArNDk1OSwxNiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5p
ZGwKIAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJDbGllbnRHdGsuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckd0ay5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJHdGsuaAogZW5kaWYg
IyBFTkQgRU5BQkxFX0ZJTEVfU1lTVEVNCiAKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcAppbmRleCA4ZjAxNjll
ZWFiYmE5M2ZmNGYxNTZkN2MyMzQ3YjZjMGIyN2Q1YmJhLi5hMWI2Y2FhYmQ4NmEzN2I5NjU0MGVm
NmU2NzQ1ZTZhODQ4NDYyYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcApAQCAtNDksMTAgKzQ5LDE1IEBACiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ay5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTG9jYWxGaWxlU3lzdGVtKiBMb2Nh
bEZpbGVTeXN0ZW06OnNfaW5zdGFuY2UgPSAwOwogCisjaWYgIVBMQVRGT1JNKEdUSykKIHZvaWQg
TG9jYWxGaWxlU3lzdGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCBpbml0aWFsaXplIHRoZSBxdW90YSBz
ZXR0aW5ncyBhcyB3ZWxsLgpAQCAtNzEsMjcgKzc2LDMyIEBAIExvY2FsRmlsZVN5c3RlbSYgTG9j
YWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKQogICAgIEFTU0VSVChzX2luc3RhbmNlKTsK
ICAgICByZXR1cm4gKnNfaW5zdGFuY2U7CiB9CisjZW5kaWYKIAogU3RyaW5nIExvY2FsRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbUJhc2VQYXRoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYXNlUGF0
aDsKIH0KIAotc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXN5
bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgYm9v
bCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IGJvb2wgc3luY2hyb25vdXMpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEFzeW5jRmlsZVN5
c3RlbTo6b3BlbkZpbGVTeXN0ZW0oYmFzZVBhdGgsIGlkZW50aWZpZXIsIHR5cGUsIGNyZWF0ZSwg
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2tzLCBz
eW5jaHJvbm91cykpOworI2Vsc2UKICAgICBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVt
KGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjcmVhdGUsIGNhbGxiYWNrcyk7CisjZW5kaWYK
IH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBib29sKQordm9pZCBMb2NhbEZp
bGVTeXN0ZW06OnJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBib29sIHN5bmNocm9ub3VzKQogewogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0gY2FsbHMgY2FsbGJhY2tzIHN5bmNocm9ub3VzbHksIHNv
IHRoZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgotICAgIGNvbnRl
eHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW0sIGZpbGVTeXN0
ZW1CYXNlUGF0aCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKSwgdHlwZSwgZmFsc2UsIGNhbGxiYWNrcykpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1CYXNlUGF0aCgpLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgZmFs
c2UsIGNhbGxiYWNrcywgc3luY2hyb25vdXMpKTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06
OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5j
RmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGJvb2wpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVx
dWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxl
U3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcywgYm9vbCBzeW5jaHJvbm91cykKIHsKICAgICAvLyBBc3luY0Zp
bGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBz
byB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KLSAgICBjb250
ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lz
dGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlm
aWVyKCksIHR5cGUsIHRydWUsIGNhbGxiYWNrcykpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1CYXNlUGF0aCgpLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgdHlwZSwgdHJ1
ZSwgY2FsbGJhY2tzLCBzeW5jaHJvbm91cykpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmRjZjYxMzdhMzVhZjcwYjQ5MTNiYjliMTdkYjBm
ZTkxM2E4ZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ay5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGsuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
KworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUd0ay5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdy
aXRlci5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgIkZpbGVNZXRh
ZGF0YS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEZpbGVNZXRhZGF0YT4gewor
ICAgIHR5cGVkZWYgRmlsZU1ldGFkYXRhIFR5cGU7CisgICAgc3RhdGljIEZpbGVNZXRhZGF0YSBj
b3B5KGNvbnN0IEZpbGVNZXRhZGF0YSYpOworfTsKKworQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZh
bHNlLCBmYWxzZSwgRmlsZU1ldGFkYXRhPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBGaWxlTWV0YWRhdGE+Ojpjb3B5KGNvbnN0IEZpbGVNZXRhZGF0YSYgb3JpZ2lu
YWwpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRmlsZU1ldGFkYXRhKCk7
Cit9CisKK1Bhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrPiBBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3NHdGs6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBib29sIHN5
bmNocm9ub3VzKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzR3RrKGNvbnRleHQsIGNhbGxiYWNrcywgc3luY2hyb25vdXMpKTsKK30KKworUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs+IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
c0d0azo6Y3JlYXRlKEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrKiB0YXNrQ29udHJv
bGxlciwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgU3RyaW5nJiBtb2RlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzR3RrKHRhc2tDb250cm9sbGVyLCBjYWxsYmFja3MsIG1vZGUpKTsKK30KKwor
CitBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBib29sIHN5bmNocm9ub3VzKQorICAgIDogbV9zeW5j
aHJvbm91cyhzeW5jaHJvbm91cykKKyAgICAsIG1fdGFza01vZGUoIiIpCisgICAgLCBtX3Rhc2tD
b250cm9sbGVyKEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOjpjcmVhdGUoY29udGV4
dCwgc3luY2hyb25vdXMpKQorICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQoreworfQorCitB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ayhB
c3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayogdGFza0NvbnRyb2xsZXIsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKKyAgICA6IG1fc3luY2hyb25vdXMoZmFsc2UpCisgICAgLCBtX3Rhc2tNb2RlKG1vZGUpCisg
ICAgLCBtX3Rhc2tDb250cm9sbGVyKHRhc2tDb250cm9sbGVyKQorICAgICwgbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQoreworfQorCit2b2lkIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0azo6ZGlk
U3VjY2VlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3NHdGs6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs6OmRpZFJlYWRN
ZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrOjpkaWRSZWFkRGly
ZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGlzRGlyZWN0b3J5KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3Rr
OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs6OmRpZENyZWF0
ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25n
IGxlbmd0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrc0d0azo6ZGlkRmFpbChpbnQgY29kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzR3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2YmJhMzVlZDQ1NzFlMWQx
Y2Q0NWU2ZTJmYTNkZjhmMWRjY2JiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGsuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0Bn
bWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrc0d0a19oCisjZGVmaW5lIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0a19oCisK
KyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ay5oIgor
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3NHdGsgOiBwdWJsaWMgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGs+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+LCBib29sIHN5bmNocm9ub3VzID0gZmFsc2UpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0az4gY3JlYXRlKEFzeW5jRmlsZVN5c3RlbVRhc2tDb250
cm9sbGVyR3RrKiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBjb25zdCBT
dHJpbmcmIG1vZGUpOworCisgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbT4pOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29u
c3QgRmlsZU1ldGFkYXRhJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBs
b25nIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpOworCitwcml2
YXRlOgorICAgIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBib29sIHN5bmNocm9u
b3VzKTsKKyAgICBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NHdGsoQXN5bmNGaWxlU3lzdGVtVGFz
a0NvbnRyb2xsZXJHdGsqLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4sIGNv
bnN0IFN0cmluZyYgbW9kZSk7CisKKyAgICBib29sIG1fc3luY2hyb25vdXM7CisgICAgU3RyaW5n
IG1fdGFza01vZGU7CisgICAgUmVmUHRyPEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3Rr
PiBtX3Rhc2tDb250cm9sbGVyOworICAgIE93blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0a19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3Bw
CmluZGV4IGMxZGIwMDZhODQ4ZjM5MjZkZDlmZWMzMWY5NjRhMGZkYmRhZjY5ZmMuLmFiZjhiOWIy
Nzk4OGU2YWI3MTJmOTc4MTU2NDg3NTM3NmJiYTRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC0xOCwxMyArMTgsMTcg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVt
R3RrLmgiCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKLSNpbmNsdWRlICJBc3luY0ZpbGVT
eXN0ZW1HdGsuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc0d0ay5oIgorI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrLmgiCisjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyR3Rr
LmgiCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ5LDcgKzUzLDYgQEAgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFzeW5jRmlsZVN5c3Rl
bTo6Y3JlYXRlKFR5cGUgdHlwZSkKIHZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3Rl
bShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVy
LCBUeXBlIHR5cGUsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBjYWxsYmFja3MtPmRpZEZh
aWwoTk9UX1NVUFBPUlRFRF9FUlIpOwogfQogCiBib29sIEFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tG
aWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlJiB0eXBl
LCBTdHJpbmcmIGZpbGVQYXRoKQpAQCAtNjAsMTMgKzYzLDEyIEBAIGJvb2wgQXN5bmNGaWxlU3lz
dGVtOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBBc3luY0ZpbGVTeXN0ZW06
OlR5cGUmCiAKIEFzeW5jRmlsZVN5c3RlbUd0azo6QXN5bmNGaWxlU3lzdGVtR3RrKEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlKQogICAgIDogQXN5bmNGaWxlU3lzdGVtKHR5cGUpCisgICAgLCBt
X2xvY2FsRmlsZVN5c3RlbUJhc2VQYXRoKCIiKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKIEFzeW5jRmlsZVN5c3RlbUd0azo6fkFzeW5jRmlsZVN5c3RlbUd0aygpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAogU3RyaW5nIEFzeW5jRmlsZVN5c3RlbUd0azo6dG9VUkwoY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCkBAIC0xMDAs
MTIgKzEwMiwxNyBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZE1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlT2JqZWN0KFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFN0cmlu
ZyYgYWJzb2x1dGVQYXRoLCBHRmlsZVR5cGUgdHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcm
IGFic29sdXRlUGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGFic29sdXRlUGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
QEAgLTEyNSwxMiArMTMyLDMzIEBAIHZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZWFkRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlV3JpdGVy
KEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnNldFRhc2tDb250cm9sbGVyKFBhc3NSZWZQ
dHI8QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGs+IHRhc2tDb250cm9sbGVyKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBBc3luY0ZpbGVTeXN0ZW1HdGs6OnZp
cnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgQXN5
bmNGaWxlU3lzdGVtR3RrOjp3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
QXN5bmNGaWxlU3lzdGVtR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNG
aWxlU3lzdGVtR3RrLmgKaW5kZXggY2I0NWI2ZWE0YmMyMDIwZThlYjRjOGViNWExOThmMDc2ZjVh
Njk3Yi4uNWU3ZDg4ZjE3YzUxNGM2MDAwYzFkNGQ0ZDAzMDM5MWZiZDU1Y2IyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaApAQCAtMjMs
MTEgKzIzLDE0IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQXN5bmNG
aWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M7CitjbGFzcyBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0azsKIAogY2xh
c3MgQXN5bmNGaWxlU3lzdGVtR3RrIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbSB7CiBwdWJsaWM6
CkBAIC00Niw2ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4
aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgYm9vbCB3
YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOworCisgICAgdm9pZCBzZXRUYXNrQ29udHJvbGxl
cihQYXNzUmVmUHRyPEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrPik7Citwcml2YXRl
OgorICAgIHZvaWQgY3JlYXRlT2JqZWN0KFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiwgY29uc3QgU3RyaW5nJiBhYnNvbHV0ZVBhdGgsIEdGaWxlVHlwZSk7IAorICAgIFN0cmlu
ZyB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmlu
ZyBtX2xvY2FsRmlsZVN5c3RlbUJhc2VQYXRoOworICAgIFJlZlB0cjxBc3luY0ZpbGVTeXN0ZW1U
YXNrQ29udHJvbGxlckd0az4gbV90YXNrQ29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0Zp
bGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlOWQy
NTY4N2Q2NjM1MjExNjBhYTRkMzA5Njc0ODliN2E1ODZhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJH
dGsuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ2hhbmdT
ZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxl
ckd0ay5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEFzeW5jRmlsZVN5
c3RlbVRhc2tDb250cm9sbGVyR3RrPiBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0azo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wgc3luY2hyb25vdXMp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxl
ckd0ayhjb250ZXh0LCBzeW5jaHJvbm91cykpOworfQorCitBc3luY0ZpbGVTeXN0ZW1UYXNrQ29u
dHJvbGxlckd0azo6QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBzeW5jaHJvbm91cykKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV93cml0ZXJUb0NhbmNlbCgwKQorICAgICwgbV9jdXJyZW50VGFza01v
ZGUoIiIpCisgICAgLCBtX3N5bmNocm9ub3VzKHN5bmNocm9ub3VzKQoreworfQorCitTdHJpbmcg
QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGs6OnVuaXF1ZU1vZGUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIEFzeW5jRmls
ZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOjpwb3N0Q2FsbGJhY2tUYXNrKFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRy
b2xsZXJHdGs6OnBvc3RUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOjpzZXRDdXJyZW50VGFza01vZGUoY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOjp3YWl0Rm9yT3BlcmF0aW9uVG9Db21w
bGV0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGs6OmNhbmNlbFdyaXRlcklmTmVj
ZXNzYXJ5KEFzeW5jRmlsZVdyaXRlckd0ayogd3JpdGVyKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzZjYyYjE4YzU1NmVkNWQ0Y2FlYWVhYTAzMGJmOWQwNzRmMDBkMmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVt
VGFza0NvbnRyb2xsZXJHdGsuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV
U0EKKyAqLworCisjaWZuZGVmIEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrX2gKKyNk
ZWZpbmUgQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGtfaAorCisjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQXN5bmNGaWxlV3JpdGVyR3RrOworCitjbGFzcyBBc3luY0ZpbGVTeXN0ZW1UYXNr
Q29udHJvbGxlckd0ayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBc3luY0ZpbGVTeXN0
ZW1UYXNrQ29udHJvbGxlckd0az4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFz
eW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGJvb2wgc3luY2hyb25vdXMpOworICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbVRh
c2tDb250cm9sbGVyR3RrKCkgeyB9CisKKyAgICB2b2lkIHBvc3RDYWxsYmFja1Rhc2soUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBwb3N0VGFza1RvTWFpblRocmVhZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KTsKKyAgICB2b2lkIHNldEN1cnJlbnRUYXNrTW9kZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIHN5bmNocm9ub3VzKCkgeyByZXR1cm4gbV9zeW5jaHJvbm91czsgfQorICAgIGJv
b2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKKworICAgIGJvb2wgY2FuY2VsV3JpdGVy
SWZOZWNlc3NhcnkoQXN5bmNGaWxlV3JpdGVyR3RrKik7CisgICAgdm9pZCBzZXRXcml0ZXJUb0Nh
bmNlbChBc3luY0ZpbGVXcml0ZXJHdGsqIHdyaXRlcikgeyBtX3dyaXRlclRvQ2FuY2VsID0gd3Jp
dGVyOyB9CisKKyAgICBTdHJpbmcgdW5pcXVlTW9kZSgpOworcHJpdmF0ZToKKyAgICBBc3luY0Zp
bGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgYm9vbCBz
eW5jaHJvbm91cyk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisK
KyAgICBBc3luY0ZpbGVXcml0ZXJHdGsqIG1fd3JpdGVyVG9DYW5jZWw7CisKKyAgICBTdHJpbmcg
bV9jdXJyZW50VGFza01vZGU7CisKKyAgICBib29sIG1fc3luY2hyb25vdXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8g
QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MGIyZTk0MTcxYmM0YzdhYTllZTdmNmNmYjQ4MjEyMmZjYTAyNzU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVdyaXRlckNsaWVu
dEd0ay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDaGFu
Z1Nlb2sgT2ggPHNoaXZhbWlkb3dAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5o
IgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlckNs
aWVudEd0az4gQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrOjpjcmVhdGUoQXN5bmNGaWxlU3lzdGVt
VGFza0NvbnRyb2xsZXJHdGsqIHRhc2tDb250cm9sbGVyLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
QXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrKHRhc2tDb250cm9sbGVyLCBjbGllbnQsIG1vZGUpKTsK
K30KKworQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrOjpBc3luY0ZpbGVXcml0ZXJDbGllbnRHdGso
QXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsqIHRhc2tDb250cm9sbGVyLCBBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIDogbV90YXNr
Q29udHJvbGxlcih0YXNrQ29udHJvbGxlcikKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAs
IG1fdGFza01vZGUobW9kZSkKK3sKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJDbGllbnRHdGs6
OmRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUgY29kZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNsaWVudEd0azo6ZGlkVHJ1bmNhdGUoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
R3RrOjpkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0FzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0OWViMGVmYWE5ZWE0
ZGE3MWQ2NTEwMjBkZTIzNzU5NGMyZWFjZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlkb3dA
Z21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBc3luY0ZpbGVXcml0
ZXJDbGllbnRHdGtfaAorI2RlZmluZSBBc3luY0ZpbGVXcml0ZXJDbGllbnRHdGtfaAorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRy
b2xsZXJHdGsuaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKKworI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50R3RrIDogcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyQ2xpZW50R3RrPiBj
cmVhdGUoQXN5bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsqLCBBc3luY0ZpbGVXcml0ZXJD
bGllbnQqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZpcnR1YWwgfkFzeW5jRmlsZVdyaXRl
ckNsaWVudEd0aygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBi
eXRlcywgYm9vbCBjb21wbGV0ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUpOworCisgICAgQXN5
bmNGaWxlU3lzdGVtVGFza0NvbnRyb2xsZXJHdGsqIHRhc2tDb250cm9sbGVyKCkgeyByZXR1cm4g
bV90YXNrQ29udHJvbGxlci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEFzeW5jRmlsZVdyaXRl
ckNsaWVudEd0ayhBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayosIEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IFN0cmluZyYpOworCisgICAgUmVmUHRyPEFzeW5jRmlsZVN5c3Rl
bVRhc2tDb250cm9sbGVyR3RrPiBtX3Rhc2tDb250cm9sbGVyOworICAgIEFzeW5jRmlsZVdyaXRl
ckNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fdGFza01vZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gQXN5
bmNGaWxlV3JpdGVyQ2xpZW50R3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0FzeW5jRmlsZVdyaXRlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYzZmZhYWRkNGQ0MGQ2ZTk1
Nzg5ZTZlZjg5NTA4NDNiM2E1YmRjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJHdGsuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNv
bT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBc3luY0ZpbGVXcml0ZXJHdGsuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudEd0ay5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBc3luY0ZpbGVXcml0
ZXJHdGs+IEFzeW5jRmlsZVdyaXRlckd0azo6Y3JlYXRlKEFzeW5jRmlsZVdyaXRlckNsaWVudCog
Y2xpZW50LCBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayogdGFza0NvbnRyb2xsZXIs
IEdGaWxlKiBmaWxlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlV3JpdGVy
R3RrKGNsaWVudCwgdGFza0NvbnRyb2xsZXIsIGZpbGUpKTsKK30KKworQXN5bmNGaWxlV3JpdGVy
R3RrOjpBc3luY0ZpbGVXcml0ZXJHdGsoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIEFz
eW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrKiB0YXNrQ29udHJvbGxlciwgR0ZpbGUqIGZp
bGUpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3Rhc2tDb250cm9sbGVyKHRhc2tD
b250cm9sbGVyKQorICAgICwgbV9maWxlKGZpbGUpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3Jp
dGVyR3RrOjp3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBc3luY0ZpbGVXcml0ZXJHdGs6OnRydW5jYXRlKGxv
bmcgbG9uZyBsZW5ndGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBc3lu
Y0ZpbGVXcml0ZXJHdGs6OmFib3J0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIEFzeW5jRmlsZVdyaXRlckd0azo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlV3JpdGVyR3RrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlV3JpdGVyR3RrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzA2MTQyZjhmODQzMGQ4YTk1MTdmNzRlYzZiMjI4M2RmZDUxYzFmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVXcml0ZXJHdGsuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENoYW5nU2VvayBPaCA8c2hp
dmFtaWRvd0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQor
ICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFzeW5j
RmlsZVdyaXRlckd0a19oCisjZGVmaW5lIEFzeW5jRmlsZVdyaXRlckd0a19oCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKKworI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFzeW5jRmlsZVdyaXRlckNsaWVudDsKK2Ns
YXNzIEFzeW5jRmlsZVN5c3RlbVRhc2tDb250cm9sbGVyR3RrOworCitjbGFzcyBBc3luY0ZpbGVX
cml0ZXJHdGsgOiBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXJHdGs+IGNyZWF0ZShBc3luY0ZpbGVXcml0ZXJDbGll
bnQqLCBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0ayosIEdGaWxlKik7CisgICAgfkFz
eW5jRmlsZVdyaXRlckd0aygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9u
ZyBwb3NpdGlvbiwgQmxvYiogZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcg
bG9uZyBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOworICAgIHZpcnR1YWwgYm9v
bCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOworCitwcml2YXRlOgorICAgIEFzeW5jRmls
ZVdyaXRlckd0ayhBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBBc3luY0ZpbGVTeXN0ZW1UYXNrQ29u
dHJvbGxlckd0ayosIEdGaWxlKik7CisKKyAgICBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xp
ZW50OworICAgIFJlZlB0cjxBc3luY0ZpbGVTeXN0ZW1UYXNrQ29udHJvbGxlckd0az4gbV90YXNr
Q29udHJvbGxlcjsKKyAgICBHUmVmUHRyPEdGaWxlPiBtX2ZpbGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAv
LyBBc3luY0ZpbGVXcml0ZXJHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0xvY2FsRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTG9jYWxGaWxlU3lzdGVtR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjZiNzhjMjNmYTFhMGQyMjcy
MzNlYzI2YmM3MDg0ZGQxODc0ZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0xvY2FsRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNv
bT4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBMb2NhbEZpbGVTeXN0ZW06OmluaXRpYWxpemVMb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitMb2NhbEZpbGVT
eXN0ZW0mIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAqc19pbnN0YW5jZTsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQo=
</data>
<flag name="review"
          id="139803"
          type_id="1"
          status="-"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="139804"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>