<?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>47394</bug_id>
          
          <creation_ts>2010-10-07 19:16:16 -0700</creation_ts>
          <short_desc>[chromium] Update ReadableDataObject/WritableDataObject interface for ChromiumDataObject change</short_desc>
          <delta_ts>2010-10-08 16:13:54 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291398</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-07 19:16:16 -0700</bug_when>
    <thetext>1. Condensing getURL()/setURL()/getHTML()/setHTML()/urlTitle()/htmlBaseURL() into urlTitle()/htmlBaseURL() and the corresponding setters.
2. Use ClipboardType instead of bools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291416</commentid>
    <comment_count>1</comment_count>
      <attachid>70196</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-07 19:54:26 -0700</bug_when>
    <thetext>Created attachment 70196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291736</commentid>
    <comment_count>2</comment_count>
      <attachid>70196</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-08 10:10:29 -0700</bug_when>
    <thetext>Comment on attachment 70196
Patch

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

&gt; WebCore/platform/chromium/ReadableDataObject.h:54
&gt; -    virtual String getHTML(String* baseURL) const;
&gt; +    String urlTitle() const;
&gt; +    KURL htmlBaseUrl() const;

I prefer the getHTML method because it makes the caller think about whether they need the base url or not.  I feel less strongly about the getURL method, but it&apos;s pretty easy to pass in NULL for the title so I&apos;m not sure there&apos;s much benefit to splitting it up.

&gt; WebCore/platform/chromium/WritableDataObject.h:59
&gt; -    virtual void setURL(const String&amp; url, const String&amp; title);
&gt; -    virtual void setHTML(const String&amp; html, const KURL&amp; baseURL);
&gt; +    void setUrlTitle(const String&amp; title);
&gt; +    void setHtmlBaseUrl(const KURL&amp; baseURL);

I prefer the old API where you can set everything in a single function call.  It makes it less likely that someone forgets to call setUrlTitle or setHtmlBaseUrl.  Also, in webkit, we tend to capitalize URL (e.g., KURL) and HTML (e.g., all the files in WebCore/html/).

&gt; WebCore/platform/chromium/WritableDataObject.h:64
&gt;      virtual String urlTitle() const;
&gt;      virtual KURL htmlBaseURL() const;

Are these methods actually called?  Do they need to be virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291911</commentid>
    <comment_count>3</comment_count>
      <attachid>70302</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-10-08 15:35:21 -0700</bug_when>
    <thetext>Created attachment 70302
Patch

(In reply to comment #2)
&gt; (From update of attachment 70196 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70196&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/chromium/ReadableDataObject.h:54
&gt; &gt; -    virtual String getHTML(String* baseURL) const;
&gt; &gt; +    String urlTitle() const;
&gt; &gt; +    KURL htmlBaseUrl() const;
&gt; 
&gt; I prefer the getHTML method because it makes the caller think about whether they need the base url or not.  I feel less strongly about the getURL method, but it&apos;s pretty easy to pass in NULL for the title so I&apos;m not sure there&apos;s much benefit to splitting it up.
&gt; 
&gt; &gt; WebCore/platform/chromium/WritableDataObject.h:59
&gt; &gt; -    virtual void setURL(const String&amp; url, const String&amp; title);
&gt; &gt; -    virtual void setHTML(const String&amp; html, const KURL&amp; baseURL);
&gt; &gt; +    void setUrlTitle(const String&amp; title);
&gt; &gt; +    void setHtmlBaseUrl(const KURL&amp; baseURL);
&gt; 
&gt; I prefer the old API where you can set everything in a single function call.  It makes it less likely that someone forgets to call setUrlTitle or setHtmlBaseUrl.  Also, in webkit, we tend to capitalize URL (e.g., KURL) and HTML (e.g., all the files in WebCore/html/).
&gt; 
&gt; &gt; WebCore/platform/chromium/WritableDataObject.h:64
&gt; &gt;      virtual String urlTitle() const;
&gt; &gt;      virtual KURL htmlBaseURL() const;
&gt; 
&gt; Are these methods actually called?  Do they need to be virtual?

They are called, but I forgot to devirtualize them. They are used when copying data from WebKit to the browser host.
I also went ahead and inlined all the simple setters/getters into the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291938</commentid>
    <comment_count>4</comment_count>
      <attachid>70302</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-08 16:13:49 -0700</bug_when>
    <thetext>Comment on attachment 70302
Patch

Clearing flags on attachment: 70302

Committed r69431: &lt;http://trac.webkit.org/changeset/69431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291939</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-08 16:13:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70196</attachid>
            <date>2010-10-07 19:54:26 -0700</date>
            <delta_ts>2010-10-08 15:35:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>11387</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODVjN2JkZi4uOGY5ZTgzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMC0wNyAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIFVwZGF0ZSBSZWFkYWJsZURhdGFPYmplY3QvV3Jp
dGFibGVEYXRhT2JqZWN0IGludGVyZmFjZSBmb3IgQ2hyb21pdW1EYXRhT2JqZWN0IGNoYW5nZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczOTQKKwor
ICAgICAgICBNaW5vciBjbGVhbnVwLS10aGVzZSBjbGFzc2VzIGhhdmUgc3VmZmVyZWQgZnJvbSBi
aXQgcm90IHNpbmNlIHRoZXkgYXJlbid0CisgICAgICAgIGFjdGl2ZWx5IHVzZWQgYXQgdGhlIG1v
bWVudC4gVGhlIHRocmVlIG1haW4gY2hhbmdlcyBhcmUgdG86CisgICAgICAgIDEpIENvbmRlbnNl
IGdldFVSTCwgc2V0VVJMLCBnZXRIVE1MLCBzZXRIVE1MLCB1cmxUaXRsZSwgaHRtbEJhc2VVcmws
CisgICAgICAgICAgIHNldFVybFRpdGxlLCBhbmQgc2V0aHRtbEJhc2VVcmwgaW50byBzZXR0ZXJz
L2dldHRlcnMgZm9yIGp1c3QgdGhlIFVSTAorICAgICAgICAgICB0aXRsZSBhbmQgSFRNTCBiYXNl
IFVSTC4KKyAgICAgICAgMikgVXNlIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBpbnN0ZWFkIG9m
IGEgYm9vbC4KKyAgICAgICAgMykgUmVtb3ZlIHRoZSB1c2Ugb2YgdmlydHVhbHMsIGFzIHRoZXkg
YXJlIG5vIGxvbmdlciBuZWVkZWQuLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUmVh
ZGFibGVEYXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBib2FyZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSk6IHJlbmFtZWQgZnJvbSBnZXRVUkwK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0YU9iamVjdDo6aHRtbEJhc2VVcmwpOiByZW5h
bWVkIGZyb20gZ2V0SFRNTAorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojpj
b250YWluc0ZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6
OmZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmVuc3Vy
ZVR5cGVDYWNoZUluaXRpYWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9SZWFk
YWJsZURhdGFPYmplY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURh
dGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpXcml0YWJsZURhdGFP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpzZXREYXRhKTog
cmVuYW1lZCBmcm9tIHNldFVSTAorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0
OjpzZXRVcmxUaXRsZSk6IHJlbmFtZWQgZnJvbSBzZXRIVE1MCisgICAgICAgIChXZWJDb3JlOjpX
cml0YWJsZURhdGFPYmplY3Q6OnNldEh0bWxCYXNlVXJsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9Xcml0YWJsZURhdGFPYmplY3QuaDoKKwogMjAxMC0xMC0wNSAgRGllZ28gR29uemFs
ZXogIDxkaWVnb2hjZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0
YU9iamVjdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVj
dC5jcHAKaW5kZXggMDg4NjczZi4uZjBmZGQxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcApAQCAtMzYsMTggKzM2LDE4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRC
dWZmZXIgY2xpcGJvYXJkQnVmZmVyKGJvb2wgaXNGb3JEcmFnZ2luZykKK3N0YXRpYyBQYXN0ZWJv
YXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGNsaXBib2FyZEJ1ZmZlcihDbGlwYm9hcmQ6OkNs
aXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKIHsKLSAgICByZXR1cm4gaXNGb3JEcmFnZ2luZyA/
IFBhc3RlYm9hcmRQcml2YXRlOjpEcmFnQnVmZmVyIDogUGFzdGVib2FyZFByaXZhdGU6OlN0YW5k
YXJkQnVmZmVyOworICAgIHJldHVybiBjbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6RHJhZ0Fu
ZERyb3AgPyBQYXN0ZWJvYXJkUHJpdmF0ZTo6RHJhZ0J1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRl
OjpTdGFuZGFyZEJ1ZmZlcjsKIH0KIAotUGFzc1JlZlB0cjxSZWFkYWJsZURhdGFPYmplY3Q+IFJl
YWRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZykKK1Bhc3NSZWZQdHI8
UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShDbGlwYm9hcmQ6
OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlYWRhYmxlRGF0YU9iamVjdChpc0ZvckRyYWdnaW5nKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZWFkYWJsZURhdGFPYmplY3QoY2xpcGJvYXJkVHlwZSkpOwogfQogCi1SZWFkYWJsZURh
dGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChib29sIGlzRm9yRHJhZ2dpbmcpCi0gICAgOiBt
X2lzRm9yRHJhZ2dpbmcoaXNGb3JEcmFnZ2luZykKK1JlYWRhYmxlRGF0YU9iamVjdDo6UmVhZGFi
bGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorICAg
IDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCiAgICAgLCBtX2NvbnRhaW5zRmlsZW5h
bWVzKGZhbHNlKQogICAgICwgbV9pc1R5cGVDYWNoZUluaXRpYWxpemVkKGZhbHNlKQogewpAQCAt
NzAsMzMgKzcwLDI5IEBAIFN0cmluZyBSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZWVkZWQpIGNvbnN0CiAgICAgU3RyaW5nIGRhdGE7CiAg
ICAgU3RyaW5nIGlnbm9yZWRNZXRhZGF0YTsKICAgICBzdWNjZWVkZWQgPSBDaHJvbWl1bUJyaWRn
ZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2lzRm9yRHJh
Z2dpbmcpLCB0eXBlLCBkYXRhLCBpZ25vcmVkTWV0YWRhdGEpOworICAgICAgICBjbGlwYm9hcmRC
dWZmZXIobV9jbGlwYm9hcmRUeXBlKSwgdHlwZSwgZGF0YSwgaWdub3JlZE1ldGFkYXRhKTsKICAg
ICByZXR1cm4gZGF0YTsKIH0KIAotU3RyaW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6Z2V0VVJMKFN0
cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgUmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSgp
IGNvbnN0CiB7Ci0gICAgU3RyaW5nIHVybDsKLSAgICBTdHJpbmcgaWdub3JlZFRpdGxlOwotICAg
IGlmICghdGl0bGUpCi0gICAgICAgIHRpdGxlID0gJmlnbm9yZWRUaXRsZTsKKyAgICBTdHJpbmcg
aWdub3JlZERhdGE7CisgICAgU3RyaW5nIHVybFRpdGxlOwogICAgIENocm9taXVtQnJpZGdlOjpj
bGlwYm9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1faXNGb3JEcmFnZ2lu
ZyksIG1pbWVUeXBlVGV4dFVSSUxpc3QsIHVybCwgKnRpdGxlKTsKLSAgICByZXR1cm4gdXJsOwor
ICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwgbWltZVR5cGVUZXh0VVJJ
TGlzdCwgaWdub3JlZERhdGEsIHVybFRpdGxlKTsKKyAgICByZXR1cm4gdXJsVGl0bGU7CiB9CiAK
LVN0cmluZyBSZWFkYWJsZURhdGFPYmplY3Q6OmdldEhUTUwoU3RyaW5nKiBiYXNlVVJMKSBjb25z
dAorS1VSTCBSZWFkYWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJsKCkgY29uc3QKIHsKLSAgICBT
dHJpbmcgaHRtbDsKLSAgICBTdHJpbmcgaWdub3JlZEJhc2VVUkw7Ci0gICAgaWYgKCFiYXNlVVJM
KQotICAgICAgICBiYXNlVVJMID0gJmlnbm9yZWRCYXNlVVJMOworICAgIFN0cmluZyBpZ25vcmVk
RGF0YTsKKyAgICBTdHJpbmcgaHRtbEJhc2VVcmw7CiAgICAgQ2hyb21pdW1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9pc0ZvckRyYWdnaW5nKSwg
bWltZVR5cGVUZXh0SFRNTCwgaHRtbCwgKmJhc2VVUkwpOwotICAgIHJldHVybiBodG1sOworICAg
ICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwgbWltZVR5cGVUZXh0SFRNTCwg
aWdub3JlZERhdGEsIGh0bWxCYXNlVXJsKTsKKyAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIGh0bWxCYXNlVXJsKTsKIH0KIAotYm9vbCBSZWFkYWJsZURhdGFPYmplY3Q6Omhhc0ZpbGVu
YW1lcygpIGNvbnN0Citib29sIFJlYWRhYmxlRGF0YU9iamVjdDo6Y29udGFpbnNGaWxlbmFtZXMo
KSBjb25zdAogewogICAgIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCk7CiAgICAgcmV0dXJu
IG1fY29udGFpbnNGaWxlbmFtZXM7CkBAIC0xMDQsNyArMTAwLDcgQEAgYm9vbCBSZWFkYWJsZURh
dGFPYmplY3Q6Omhhc0ZpbGVuYW1lcygpIGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+IFJlYWRhYmxl
RGF0YU9iamVjdDo6ZmlsZW5hbWVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2hyb21pdW1Ccmlk
Z2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMoY2xpcGJvYXJkQnVmZmVyKG1faXNGb3JEcmFnZ2lu
ZykpOworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhj
bGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSk7CiB9CiAKIHZvaWQgUmVhZGFibGVEYXRh
T2JqZWN0OjplbnN1cmVUeXBlQ2FjaGVJbml0aWFsaXplZCgpIGNvbnN0CkBAIC0xMTMsNyArMTA5
LDcgQEAgdm9pZCBSZWFkYWJsZURhdGFPYmplY3Q6OmVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVk
KCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90eXBlcyA9IENocm9taXVtQnJpZGdl
OjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlciht
X2lzRm9yRHJhZ2dpbmcpLCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CisgICAgICAgIGNsaXBib2Fy
ZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CiAgICAgbV9p
c1R5cGVDYWNoZUluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKaW5kZXggNjBmNmQ0NS4uMDI3ZTBlZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaWZuZGVmIFJlYWRhYmxlRGF0YU9iamVjdF9oCiAjZGVmaW5lIFJlYWRh
YmxlRGF0YU9iamVjdF9oCiAKKyNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTQzLDI2ICs0NCwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBi
cm93c2VyIHRvIHRoZSByZW5kZXJlci4KIGNsYXNzIFJlYWRhYmxlRGF0YU9iamVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlYWRhYmxlRGF0YU9iamVjdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlYWRhYmxlRGF0YU9iamVjdD4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZyk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBjcmVhdGUoQ2xpcGJv
YXJkOjpDbGlwYm9hcmRUeXBlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VlZGVkKSBjb25z
dDsKKyAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKKyAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMo
KSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1
Y2NlZWRlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRVUkwoU3RyaW5nKiB0aXRs
ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0SFRNTChTdHJpbmcqIGJhc2VVUkwpIGNv
bnN0OworICAgIFN0cmluZyB1cmxUaXRsZSgpIGNvbnN0OworICAgIEtVUkwgaHRtbEJhc2VVcmwo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNGaWxlbmFtZXMoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcygpIGNvbnN0OworICAgIGJvb2wgY29udGFp
bnNGaWxlbmFtZXMoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFkYWJsZURhdGFPYmplY3QoYm9vbCBpc0Zv
ckRyYWdnaW5nKTsKKyAgICBleHBsaWNpdCBSZWFkYWJsZURhdGFPYmplY3QoQ2xpcGJvYXJkOjpD
bGlwYm9hcmRUeXBlKTsKIAogICAgIC8vIFRoaXMgaXNuJ3QgYWx3YXlzIGNvbnN0Li4uIGJ1dCBt
b3N0IG9mIHRoZSB0aW1lIGl0IGlzLgogICAgIHZvaWQgZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6
ZWQoKSBjb25zdDsKIAotCi0gICAgYm9vbCBtX2lzRm9yRHJhZ2dpbmc7CisgICAgQ2xpcGJvYXJk
OjpDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsKIAogICAgIC8vIFRvIGF2b2lkIG1ha2lu
ZyBhIGxvdCBvZiBJUEMgY2FsbHMgZm9yIGVhY2ggZHJhZyBldmVudCwgd2UgY2FjaGUgc29tZQog
ICAgIC8vIHZhbHVlcyBpbiB0aGUgcmVuZGVyZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5jcHAKaW5kZXggYWVlN2JmYy4uZTA5YTBiZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURhdGFPYmplY3QuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmNwcApA
QCAtMzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxX
cml0YWJsZURhdGFPYmplY3Q+IFdyaXRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKGJvb2wgaXNGb3JE
cmFnZ2luZykKK1Bhc3NSZWZQdHI8V3JpdGFibGVEYXRhT2JqZWN0PiBXcml0YWJsZURhdGFPYmpl
Y3Q6OmNyZWF0ZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdyaXRhYmxlRGF0YU9iamVjdChpc0ZvckRyYWdnaW5nKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXcml0YWJsZURhdGFPYmplY3QoY2xpcGJvYXJkVHlw
ZSkpOwogfQogCi1Xcml0YWJsZURhdGFPYmplY3Q6OldyaXRhYmxlRGF0YU9iamVjdChib29sIGlz
Rm9yRHJhZ2dpbmcpCi0gICAgOiBtX2lzRm9yRHJhZ2dpbmcoaXNGb3JEcmFnZ2luZykKK1dyaXRh
YmxlRGF0YU9iamVjdDo6V3JpdGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlKQorICAgIDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCiB7
CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXcml0YWJsZURhdGFPYmplY3Q6OmNsZWFyQWxs
KCkKIAogYm9vbCBXcml0YWJsZURhdGFPYmplY3Q6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgaWYgKCFtX2lzRm9yRHJhZ2dpbmcpIHsKKyAg
ICBpZiAobV9jbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6Q29weUFuZFBhc3RlKSB7CiAgICAg
ICAgIENocm9taXVtQnJpZGdlOjpjbGlwYm9hcmRXcml0ZURhdGEodHlwZSwgZGF0YSwgIiIpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04OCwxNSArODgsMTMgQEAgYm9vbCBXcml0
YWJsZURhdGFPYmplY3Q6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV3JpdGFibGVEYXRhT2JqZWN0Ojpz
ZXRVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFdyaXRh
YmxlRGF0YU9iamVjdDo6c2V0VXJsVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBz
ZXREYXRhKG1pbWVUeXBlVGV4dFVSSUxpc3QsIHVybCk7CiAgICAgbV91cmxUaXRsZSA9IHRpdGxl
OwogfQogCi12b2lkIFdyaXRhYmxlRGF0YU9iamVjdDo6c2V0SFRNTChjb25zdCBTdHJpbmcmIGh0
bWwsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCit2b2lkIFdyaXRhYmxlRGF0YU9iamVjdDo6c2V0SHRt
bEJhc2VVcmwoY29uc3QgS1VSTCYgYmFzZVVSTCkKIHsKLSAgICBzZXREYXRhKG1pbWVUeXBlVGV4
dEhUTUwsIGh0bWwpOwogICAgIG1faHRtbEJhc2VVUkwgPSBiYXNlVVJMOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURhdGFPYmplY3QuaAppbmRleCA3MWUyZTI2
Li45MTkyMjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1dyaXRhYmxl
RGF0YU9iamVjdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRh
T2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgV3JpdGFibGVEYXRhT2JqZWN0X2gK
ICNkZWZpbmUgV3JpdGFibGVEYXRhT2JqZWN0X2gKIAorI2luY2x1ZGUgIkNsaXBib2FyZC5oIgog
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgpAQCAtNDcsMzIgKzQ4LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIGF0b21pY2FsbHkuCiBjbGFzcyBXcml0YWJsZURhdGFPYmplY3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxXcml0YWJsZURhdGFPYmplY3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXcml0YWJsZURhdGFPYmplY3Q+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdyaXRhYmxlRGF0YU9iamVjdD4gY3JlYXRlKENsaXBib2FyZDo6Q2xp
cGJvYXJkVHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZXMoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJBbGwoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgdm9pZCBjbGVhckRhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKTsKKyAgICB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZXMoKTsKKyAgICB2b2lk
IGNsZWFyQWxsKCk7CisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRVUkwoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIVE1MKGNvbnN0
IFN0cmluZyYgaHRtbCwgY29uc3QgS1VSTCYgYmFzZVVSTCk7CisgICAgdm9pZCBzZXRVcmxUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHNldEh0bWxCYXNlVXJsKGNvbnN0IEtV
UkwmIGJhc2VVUkwpOwogCiAgICAgLy8gVXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRyYWcgZGF0YSBm
cm9tIHRoZSByZW5kZXJlciB0byB0aGUgYnJvd3Nlci4KLSAgICB2aXJ0dWFsIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IGRhdGFNYXAoKSBjb25zdDsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBkYXRhTWFwKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsVGl0bGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEtVUkwgaHRtbEJhc2VVUkwoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgU3Ry
aW5nIGZpbGVFeHRlbnNpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlQ29udGVu
dEZpbGVuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZmlsZUNvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUV4dGVuc2lvbihj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnQoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+KTsKKyAgICBTdHJpbmcgZmlsZUV4dGVuc2lvbigpIGNvbnN0OworICAg
IFN0cmluZyBmaWxlQ29udGVudEZpbGVuYW1lKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbGVDb250ZW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRGaWxlRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0RmlsZUNvbnRlbnRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHNldEZpbGVDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
Pik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV3JpdGFibGVEYXRhT2JqZWN0KGJvb2wgaXNG
b3JEcmFnZ2luZyk7CisgICAgZXhwbGljaXQgV3JpdGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6
Q2xpcGJvYXJkVHlwZSk7CiAKLSAgICBib29sIG1faXNGb3JEcmFnZ2luZzsKKyAgICBDbGlwYm9h
cmQ6OkNsaXBib2FyZFR5cGUgbV9jbGlwYm9hcmRUeXBlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gbV9kYXRhTWFwOwogICAgIFN0cmluZyBtX3VybFRpdGxlOwo=
</data>
<flag name="review"
          id="59997"
          type_id="1"
          status="-"
          setter="tony"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70302</attachid>
            <date>2010-10-08 15:35:21 -0700</date>
            <delta_ts>2010-10-08 16:13:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>foo.patch</filename>
            <type>text/plain</type>
            <size>13290</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODVjN2JkZi4uMzU0ZjVmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0xMC0wOCAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIFVwZGF0ZSBSZWFkYWJsZURhdGFPYmplY3QvV3Jp
dGFibGVEYXRhT2JqZWN0IGludGVyZmFjZSBmb3IgQ2hyb21pdW1EYXRhT2JqZWN0IGNoYW5nZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczOTQKKwor
ICAgICAgICBNaW5vciBjbGVhbnVwLS10aGVzZSBjbGFzc2VzIGhhdmUgc3VmZmVyZWQgZnJvbSBi
aXQgcm90IHNpbmNlIHRoZXkgYXJlbid0CisgICAgICAgIGFjdGl2ZWx5IHVzZWQgYXQgdGhlIG1v
bWVudC4gVGhlIHRocmVlIG1haW4gY2hhbmdlcyBhcmUgdG86CisgICAgICAgIDEpIENvbmRlbnNl
IGdldFVSTCwgc2V0VVJMLCBnZXRIVE1MLCBzZXRIVE1MLCB1cmxUaXRsZSwgaHRtbEJhc2VVcmws
CisgICAgICAgICAgIHNldFVybFRpdGxlLCBhbmQgc2V0aHRtbEJhc2VVcmwgaW50byBzZXR0ZXJz
L2dldHRlcnMgZm9yIGp1c3QgdGhlIFVSTAorICAgICAgICAgICB0aXRsZSBhbmQgSFRNTCBiYXNl
IFVSTC4KKyAgICAgICAgMikgVXNlIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBpbnN0ZWFkIG9m
IGEgYm9vbC4KKyAgICAgICAgMykgUmVtb3ZlIHRoZSB1c2Ugb2YgdmlydHVhbHMsIGFzIHRoZXkg
YXJlIG5vIGxvbmdlciBuZWVkZWQuLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUmVh
ZGFibGVEYXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBib2FyZEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSk6IHJlbmFtZWQgZnJvbSBnZXRVUkwK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0YU9iamVjdDo6aHRtbEJhc2VVcmwpOiByZW5h
bWVkIGZyb20gZ2V0SFRNTAorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojpj
b250YWluc0ZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6
OmZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmVuc3Vy
ZVR5cGVDYWNoZUluaXRpYWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9SZWFk
YWJsZURhdGFPYmplY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURh
dGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpXcml0YWJsZURhdGFP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURhdGFPYmplY3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldyaXRhYmxlRGF0YU9iamVjdDo6c2V0VXJsVGl0bGUpOiByZW5hbWVkIGZy
b20gc2V0VVJMCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZURhdGFPYmplY3Q6OnNldEh0bWxC
YXNlVXJsKTogcmVuYW1lZCBmcm9tIHNldEhUTUwKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxl
RGF0YU9iamVjdDo6ZGF0YU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZURhdGFPYmpl
Y3Q6OnVybFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlRGF0YU9iamVjdDo6aHRt
bEJhc2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0OjpmaWxlRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlRGF0YU9iamVjdDo6ZmlsZUNvbnRl
bnRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZURhdGFPYmplY3Q6OmZpbGVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlRGF0YU9iamVjdDo6c2V0RmlsZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZURhdGFPYmplY3Q6OnNldEZpbGVD
b250ZW50RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVEYXRhT2JqZWN0Ojpz
ZXRGaWxlQ29udGVudCk6CisKIDIwMTAtMTAtMDUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwCmluZGV4IDA4
ODY3M2YuLmYwZmRkMTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVh
ZGFibGVEYXRhT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRh
YmxlRGF0YU9iamVjdC5jcHAKQEAgLTM2LDE4ICszNiwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGNsaXBib2Fy
ZEJ1ZmZlcihib29sIGlzRm9yRHJhZ2dpbmcpCitzdGF0aWMgUGFzdGVib2FyZFByaXZhdGU6OkNs
aXBib2FyZEJ1ZmZlciBjbGlwYm9hcmRCdWZmZXIoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNs
aXBib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIGlzRm9yRHJhZ2dpbmcgPyBQYXN0ZWJvYXJkUHJp
dmF0ZTo6RHJhZ0J1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcjsKKyAg
ICByZXR1cm4gY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wID8gUGFzdGVi
b2FyZFByaXZhdGU6OkRyYWdCdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZm
ZXI7CiB9CiAKLVBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmpl
Y3Q6OmNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcpCitQYXNzUmVmUHRyPFJlYWRhYmxlRGF0YU9i
amVjdD4gUmVhZGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBl
IGNsaXBib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkYWJsZURhdGFP
YmplY3QoaXNGb3JEcmFnZ2luZykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZGFibGVE
YXRhT2JqZWN0KGNsaXBib2FyZFR5cGUpKTsKIH0KIAotUmVhZGFibGVEYXRhT2JqZWN0OjpSZWFk
YWJsZURhdGFPYmplY3QoYm9vbCBpc0ZvckRyYWdnaW5nKQotICAgIDogbV9pc0ZvckRyYWdnaW5n
KGlzRm9yRHJhZ2dpbmcpCitSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChD
bGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IG1fY2xpcGJvYXJk
VHlwZShjbGlwYm9hcmRUeXBlKQogICAgICwgbV9jb250YWluc0ZpbGVuYW1lcyhmYWxzZSkKICAg
ICAsIG1faXNUeXBlQ2FjaGVJbml0aWFsaXplZChmYWxzZSkKIHsKQEAgLTcwLDMzICs3MCwyOSBA
QCBTdHJpbmcgUmVhZGFibGVEYXRhT2JqZWN0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Ym9vbCYgc3VjY2VlZGVkKSBjb25zdAogICAgIFN0cmluZyBkYXRhOwogICAgIFN0cmluZyBpZ25v
cmVkTWV0YWRhdGE7CiAgICAgc3VjY2VlZGVkID0gQ2hyb21pdW1CcmlkZ2U6OmNsaXBib2FyZFJl
YWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9pc0ZvckRyYWdnaW5nKSwgdHlwZSwg
ZGF0YSwgaWdub3JlZE1ldGFkYXRhKTsKKyAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSksIHR5cGUsIGRhdGEsIGlnbm9yZWRNZXRhZGF0YSk7CiAgICAgcmV0dXJuIGRhdGE7
CiB9CiAKLVN0cmluZyBSZWFkYWJsZURhdGFPYmplY3Q6OmdldFVSTChTdHJpbmcqIHRpdGxlKSBj
b25zdAorU3RyaW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6dXJsVGl0bGUoKSBjb25zdAogewotICAg
IFN0cmluZyB1cmw7Ci0gICAgU3RyaW5nIGlnbm9yZWRUaXRsZTsKLSAgICBpZiAoIXRpdGxlKQot
ICAgICAgICB0aXRsZSA9ICZpZ25vcmVkVGl0bGU7CisgICAgU3RyaW5nIGlnbm9yZWREYXRhOwor
ICAgIFN0cmluZyB1cmxUaXRsZTsKICAgICBDaHJvbWl1bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERh
dGEoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2lzRm9yRHJhZ2dpbmcpLCBtaW1lVHlwZVRl
eHRVUklMaXN0LCB1cmwsICp0aXRsZSk7Ci0gICAgcmV0dXJuIHVybDsKKyAgICAgICAgY2xpcGJv
YXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dFVSSUxpc3QsIGlnbm9yZWRE
YXRhLCB1cmxUaXRsZSk7CisgICAgcmV0dXJuIHVybFRpdGxlOwogfQogCi1TdHJpbmcgUmVhZGFi
bGVEYXRhT2JqZWN0OjpnZXRIVE1MKFN0cmluZyogYmFzZVVSTCkgY29uc3QKK0tVUkwgUmVhZGFi
bGVEYXRhT2JqZWN0OjpodG1sQmFzZVVybCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGh0bWw7Ci0g
ICAgU3RyaW5nIGlnbm9yZWRCYXNlVVJMOwotICAgIGlmICghYmFzZVVSTCkKLSAgICAgICAgYmFz
ZVVSTCA9ICZpZ25vcmVkQmFzZVVSTDsKKyAgICBTdHJpbmcgaWdub3JlZERhdGE7CisgICAgU3Ry
aW5nIGh0bWxCYXNlVXJsOwogICAgIENocm9taXVtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRGF0YSgK
LSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1faXNGb3JEcmFnZ2luZyksIG1pbWVUeXBlVGV4dEhU
TUwsIGh0bWwsICpiYXNlVVJMKTsKLSAgICByZXR1cm4gaHRtbDsKKyAgICAgICAgY2xpcGJvYXJk
QnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dEhUTUwsIGlnbm9yZWREYXRhLCBo
dG1sQmFzZVVybCk7CisgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBodG1sQmFzZVVy
bCk7CiB9CiAKLWJvb2wgUmVhZGFibGVEYXRhT2JqZWN0OjpoYXNGaWxlbmFtZXMoKSBjb25zdAor
Ym9vbCBSZWFkYWJsZURhdGFPYmplY3Q6OmNvbnRhaW5zRmlsZW5hbWVzKCkgY29uc3QKIHsKICAg
ICBlbnN1cmVUeXBlQ2FjaGVJbml0aWFsaXplZCgpOwogICAgIHJldHVybiBtX2NvbnRhaW5zRmls
ZW5hbWVzOwpAQCAtMTA0LDcgKzEwMCw3IEBAIGJvb2wgUmVhZGFibGVEYXRhT2JqZWN0OjpoYXNG
aWxlbmFtZXMoKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBSZWFkYWJsZURhdGFPYmplY3Q6OmZp
bGVuYW1lcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpjbGlwYm9hcmRS
ZWFkRmlsZW5hbWVzKGNsaXBib2FyZEJ1ZmZlcihtX2lzRm9yRHJhZ2dpbmcpKTsKKyAgICByZXR1
cm4gQ2hyb21pdW1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMoY2xpcGJvYXJkQnVmZmVy
KG1fY2xpcGJvYXJkVHlwZSkpOwogfQogCiB2b2lkIFJlYWRhYmxlRGF0YU9iamVjdDo6ZW5zdXJl
VHlwZUNhY2hlSW5pdGlhbGl6ZWQoKSBjb25zdApAQCAtMTEzLDcgKzEwOSw3IEBAIHZvaWQgUmVh
ZGFibGVEYXRhT2JqZWN0OjplbnN1cmVUeXBlQ2FjaGVJbml0aWFsaXplZCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fdHlwZXMgPSBDaHJvbWl1bUJyaWRnZTo6Y2xpcGJvYXJkUmVh
ZEF2YWlsYWJsZVR5cGVzKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9pc0ZvckRyYWdnaW5n
KSwgJm1fY29udGFpbnNGaWxlbmFtZXMpOworICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlw
Ym9hcmRUeXBlKSwgJm1fY29udGFpbnNGaWxlbmFtZXMpOwogICAgIG1faXNUeXBlQ2FjaGVJbml0
aWFsaXplZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUmVhZGFibGVEYXRhT2JqZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRh
YmxlRGF0YU9iamVjdC5oCmluZGV4IDYwZjZkNDUuLjAyN2UwZWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAog
I2lmbmRlZiBSZWFkYWJsZURhdGFPYmplY3RfaAogI2RlZmluZSBSZWFkYWJsZURhdGFPYmplY3Rf
aAogCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC00MywyNiArNDQsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gYnJvd3NlciB0byB0aGUg
cmVuZGVyZXIuCiBjbGFzcyBSZWFkYWJsZURhdGFPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWFkYWJsZURhdGFPYmplY3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFk
YWJsZURhdGFPYmplY3Q+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlYWRhYmxlRGF0YU9iamVjdD4gY3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJk
VHlwZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
SGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2NlZWRlZCkgY29uc3Q7CisgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3Q7CisgICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7CisgICAg
U3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZWVkZWQpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBTdHJpbmcgZ2V0VVJMKFN0cmluZyogdGl0bGUpIGNvbnN0OwotICAg
IHZpcnR1YWwgU3RyaW5nIGdldEhUTUwoU3RyaW5nKiBiYXNlVVJMKSBjb25zdDsKKyAgICBTdHJp
bmcgdXJsVGl0bGUoKSBjb25zdDsKKyAgICBLVVJMIGh0bWxCYXNlVXJsKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzRmlsZW5hbWVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiBmaWxlbmFtZXMoKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zRmlsZW5hbWVzKCkg
Y29uc3Q7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgUmVhZGFibGVEYXRhT2JqZWN0KGJvb2wgaXNGb3JEcmFnZ2luZyk7Cisg
ICAgZXhwbGljaXQgUmVhZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7
CiAKICAgICAvLyBUaGlzIGlzbid0IGFsd2F5cyBjb25zdC4uLiBidXQgbW9zdCBvZiB0aGUgdGlt
ZSBpdCBpcy4KICAgICB2b2lkIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3Q7CiAK
LQotICAgIGJvb2wgbV9pc0ZvckRyYWdnaW5nOworICAgIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBtX2NsaXBib2FyZFR5cGU7CiAKICAgICAvLyBUbyBhdm9pZCBtYWtpbmcgYSBsb3Qgb2YgSVBD
IGNhbGxzIGZvciBlYWNoIGRyYWcgZXZlbnQsIHdlIGNhY2hlIHNvbWUKICAgICAvLyB2YWx1ZXMg
aW4gdGhlIHJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9X
cml0YWJsZURhdGFPYmplY3QuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJs
ZURhdGFPYmplY3QuY3BwCmluZGV4IGFlZTdiZmMuLmVjOGZmNmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8V3JpdGFibGVEYXRhT2Jq
ZWN0PiBXcml0YWJsZURhdGFPYmplY3Q6OmNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcpCitQYXNz
UmVmUHRyPFdyaXRhYmxlRGF0YU9iamVjdD4gV3JpdGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoQ2xp
cGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXcml0YWJsZURhdGFPYmplY3QoaXNGb3JEcmFnZ2luZykpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV3JpdGFibGVEYXRhT2JqZWN0KGNsaXBib2FyZFR5cGUpKTsKIH0KIAotV3Jp
dGFibGVEYXRhT2JqZWN0OjpXcml0YWJsZURhdGFPYmplY3QoYm9vbCBpc0ZvckRyYWdnaW5nKQot
ICAgIDogbV9pc0ZvckRyYWdnaW5nKGlzRm9yRHJhZ2dpbmcpCitXcml0YWJsZURhdGFPYmplY3Q6
OldyaXRhYmxlRGF0YU9iamVjdChDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlw
ZSkKKyAgICA6IG1fY2xpcGJvYXJkVHlwZShjbGlwYm9hcmRUeXBlKQogewogfQogCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgV3JpdGFibGVEYXRhT2JqZWN0OjpjbGVhckFsbCgpCiAKIGJvb2wgV3Jp
dGFibGVEYXRhT2JqZWN0OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQogewotICAgIGlmICghbV9pc0ZvckRyYWdnaW5nKSB7CisgICAgaWYgKG1fY2xpcGJv
YXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkNvcHlBbmRQYXN0ZSkgewogICAgICAgICBDaHJvbWl1bUJy
aWRnZTo6Y2xpcGJvYXJkV3JpdGVEYXRhKHR5cGUsIGRhdGEsICIiKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtODgsNjUgKzg4LDQgQEAgYm9vbCBXcml0YWJsZURhdGFPYmplY3Q6
OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgV3JpdGFibGVEYXRhT2JqZWN0OjpzZXRVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAgc2V0RGF0YShtaW1lVHlwZVRl
eHRVUklMaXN0LCB1cmwpOwotICAgIG1fdXJsVGl0bGUgPSB0aXRsZTsKLX0KLQotdm9pZCBXcml0
YWJsZURhdGFPYmplY3Q6OnNldEhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBjb25zdCBLVVJMJiBi
YXNlVVJMKQotewotICAgIHNldERhdGEobWltZVR5cGVUZXh0SFRNTCwgaHRtbCk7Ci0gICAgbV9o
dG1sQmFzZVVSTCA9IGJhc2VVUkw7Ci19Ci0KLS8vIEFjY2Vzc29ycyB1c2VkIHdoZW4gdHJhbnNm
ZXJyaW5nIGRyYWcgZGF0YSBmcm9tIHRoZSByZW5kZXJlciB0byB0aGUKLS8vIGJyb3dzZXIuCi1I
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBXcml0YWJsZURhdGFPYmplY3Q6OmRhdGFNYXAoKSBjb25z
dAotewotICAgIHJldHVybiBtX2RhdGFNYXA7Ci19Ci0KLVN0cmluZyBXcml0YWJsZURhdGFPYmpl
Y3Q6OnVybFRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91cmxUaXRsZTsKLX0KLQotS1VS
TCBXcml0YWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9odG1sQmFzZVVSTDsKLX0KLQotLy8gVXNlZCBmb3IgdHJhbnNmZXJyaW5nIGZpbGUgZGF0YSBm
cm9tIHRoZSByZW5kZXJlciB0byB0aGUgYnJvd3Nlci4KLVN0cmluZyBXcml0YWJsZURhdGFPYmpl
Y3Q6OmZpbGVFeHRlbnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2ZpbGVFeHRlbnNpb247
Ci19Ci0KLVN0cmluZyBXcml0YWJsZURhdGFPYmplY3Q6OmZpbGVDb250ZW50RmlsZW5hbWUoKSBj
b25zdAotewotICAgIHJldHVybiBtX2ZpbGVDb250ZW50RmlsZW5hbWU7Ci19Ci0KLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXcml0YWJsZURhdGFPYmplY3Q6OmZpbGVDb250ZW50KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9maWxlQ29udGVudDsKLX0KLQotdm9pZCBXcml0YWJsZURhdGFPYmpl
Y3Q6OnNldEZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQotewotICAg
IG1fZmlsZUV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb247Ci19Ci0KLXZvaWQgV3JpdGFibGVEYXRh
T2JqZWN0OjpzZXRGaWxlQ29udGVudEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZUNvbnRlbnRG
aWxlbmFtZSkKLXsKLSAgICBtX2ZpbGVDb250ZW50RmlsZW5hbWUgPSBmaWxlQ29udGVudEZpbGVu
YW1lOwotfQotCi12b2lkIFdyaXRhYmxlRGF0YU9iamVjdDo6c2V0RmlsZUNvbnRlbnQoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KQotewotICAgIG1fZmlsZUNvbnRlbnQgPSBm
aWxlQ29udGVudDsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURhdGFPYmplY3QuaAppbmRleCA3MWUyZTI2Li5jNDc1
ZDE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9i
amVjdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgV3JpdGFibGVEYXRhT2JqZWN0X2gKICNkZWZp
bmUgV3JpdGFibGVEYXRhT2JqZWN0X2gKIAorI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgpAQCAtNDcsMzIgKzQ4LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGF0
b21pY2FsbHkuCiBjbGFzcyBXcml0YWJsZURhdGFPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxX
cml0YWJsZURhdGFPYmplY3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXcml0
YWJsZURhdGFPYmplY3Q+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdyaXRhYmxlRGF0YU9iamVjdD4gY3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJk
VHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZXMoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJBbGwoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKTsKKyAgICB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZXMoKTsKKyAgICB2b2lkIGNsZWFy
QWxsKCk7CisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIVE1MKGNvbnN0IFN0cmlu
ZyYgaHRtbCwgY29uc3QgS1VSTCYgYmFzZVVSTCk7CisgICAgdm9pZCBzZXRVcmxUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKSB7IG1fdXJsVGl0bGUgPSB0aXRsZTsgfQorICAgIHZvaWQgc2V0SHRt
bEJhc2VVcmwoY29uc3QgS1VSTCYgYmFzZVVSTCkgeyBtX2h0bWxCYXNlVVJMID0gYmFzZVVSTDsg
fQogCiAgICAgLy8gVXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRyYWcgZGF0YSBmcm9tIHRoZSByZW5k
ZXJlciB0byB0aGUgYnJvd3Nlci4KLSAgICB2aXJ0dWFsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IGRhdGFNYXAoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB1cmxUaXRsZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgS1VSTCBodG1sQmFzZVVSTCgpIGNvbnN0OworICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IGRhdGFNYXAoKSBjb25zdCB7IHJldHVybiBtX2RhdGFNYXA7IH0KKyAgICBTdHJp
bmcgdXJsVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3VybFRpdGxlOyB9CisgICAgS1VSTCBodG1s
QmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faHRtbEJhc2VVUkw7IH0KIAotICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVFeHRlbnNpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxlQ29u
dGVudEZpbGVuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZmlsZUNvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnQoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICBTdHJpbmcgZmlsZUV4dGVuc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZUV4dGVuc2lvbjsgfQorICAgIFN0cmluZyBmaWxlQ29udGVudEZpbGVuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9maWxlQ29udGVudEZpbGVuYW1lOyB9CisgICAgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maWxlQ29udGVu
dDsgfQorICAgIHZvaWQgc2V0RmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNp
b24pIHsgbV9maWxlRXh0ZW5zaW9uID0gZmlsZUV4dGVuc2lvbjsgfQorICAgIHZvaWQgc2V0Rmls
ZUNvbnRlbnRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVDb250ZW50RmlsZW5hbWUpIHsgbV9m
aWxlQ29udGVudEZpbGVuYW1lID0gZmlsZUNvbnRlbnRGaWxlbmFtZTsgfQorICAgIHZvaWQgc2V0
RmlsZUNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KSB7IG1fZmls
ZUNvbnRlbnQgPSBmaWxlQ29udGVudDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdyaXRh
YmxlRGF0YU9iamVjdChib29sIGlzRm9yRHJhZ2dpbmcpOworICAgIGV4cGxpY2l0IFdyaXRhYmxl
RGF0YU9iamVjdChDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUpOwogCi0gICAgYm9vbCBtX2lzRm9y
RHJhZ2dpbmc7CisgICAgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsK
IAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fZGF0YU1hcDsKICAgICBTdHJpbmcgbV91
cmxUaXRsZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>