<?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>26266</bug_id>
          
          <creation_ts>2009-06-08 17:50:38 -0700</creation_ts>
          <short_desc>add Android platform-specific files to WebCore/platform (part 9)</short_desc>
          <delta_ts>2009-06-10 12:21:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>1</everconfirmed>
          <reporter name="Feng Qian">feng</reporter>
          <assigned_to name="Feng Qian">feng</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124855</commentid>
    <comment_count>0</comment_count>
    <who name="Feng Qian">feng</who>
    <bug_when>2009-06-08 17:50:38 -0700</bug_when>
    <thetext>+        * platform/android/TemporaryLinkStubs.cpp: Added.

Comments on the old patch:

(From update of attachment 30005 [review])
We don&apos;t generally commit commented out code:
 97 //void FrameView::updateBorder() { verifiedOk(); }

I&apos;m surprised there are all these localized strings here when I just reviewed
another patch with unimplemented localized strings.  Seems these shoudl be
mvoed, no?

ASSERT(0);
we use ASSERT_NOT_REACHED()

In general this is fine.  Again if you were a commiter you could just fix it as
you landed, but as is, you should re-post this for someone else to land.

Please remove all the commetned out ones:
 718 //void Frame::clearPlatformScriptObjects() { notImplemented(); }

I think you could make all these 1-line definitions to make them more readable.
 Up to you.  But we generally found them more readable that way.  WK does not
have an 80 col limit like google does.

r- for the nit above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125046</commentid>
    <comment_count>1</comment_count>
      <attachid>31115</attachid>
    <who name="Feng Qian">feng</who>
    <bug_when>2009-06-09 17:27:35 -0700</bug_when>
    <thetext>Created attachment 31115
patch set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125047</commentid>
    <comment_count>2</comment_count>
    <who name="Feng Qian">feng</who>
    <bug_when>2009-06-09 17:30:40 -0700</bug_when>
    <thetext>Eric,

The new patch addressed most of your comments:
1. functions commented out are removed
2. ASSERT(0) -&gt; ASSERT_NOT_REACHED();
3. String localization functions are moved to LocalizedStringsAndroid.cpp

I didn&apos;t change 1-line functions, it has too much editing. This file is mostly empty stubs to make webcore link.

Thanks
Feng

(In reply to comment #0)
&gt; +        * platform/android/TemporaryLinkStubs.cpp: Added.
&gt; 
&gt; Comments on the old patch:
&gt; 
&gt; (From update of attachment 30005 [review] [review])
&gt; We don&apos;t generally commit commented out code:
&gt;  97 //void FrameView::updateBorder() { verifiedOk(); }
&gt; 
&gt; I&apos;m surprised there are all these localized strings here when I just reviewed
&gt; another patch with unimplemented localized strings.  Seems these shoudl be
&gt; mvoed, no?
&gt; 
&gt; ASSERT(0);
&gt; we use ASSERT_NOT_REACHED()
&gt; 
&gt; In general this is fine.  Again if you were a commiter you could just fix it as
&gt; you landed, but as is, you should re-post this for someone else to land.
&gt; 
&gt; Please remove all the commetned out ones:
&gt;  718 //void Frame::clearPlatformScriptObjects() { notImplemented(); }
&gt; 
&gt; I think you could make all these 1-line definitions to make them more readable.
&gt;  Up to you.  But we generally found them more readable that way.  WK does not
&gt; have an 80 col limit like google does.
&gt; 
&gt; r- for the nit above.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125100</commentid>
    <comment_count>3</comment_count>
      <attachid>31115</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 00:28:18 -0700</bug_when>
    <thetext>Comment on attachment 31115
patch set

I&apos;m surprised some of these are stubs.  Like focusRingColor().

But you&apos;re really welcome to add whatever you like to this file. ;)  rs=me.

+    return IntSize(0, 0);
is the same as IntSize();

You can also disable DEBUGGER  and PROFILER instead of adding all these stubs for the debugger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125194</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-10 12:21:30 -0700</bug_when>
    <thetext>Landed in @r44587.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31115</attachid>
            <date>2009-06-09 17:27:35 -0700</date>
            <delta_ts>2009-06-10 00:28:18 -0700</delta_ts>
            <desc>patch set</desc>
            <filename>bug26266.txt</filename>
            <type>text/plain</type>
            <size>16050</size>
            <attacher name="Feng Qian">feng</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDU0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMDktMDYtMDkgIEZlbmcgUWlhbiAgPGZlbmdAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBB
bmRyb2lkIHNwZWNpZmljIGZpbGUgdG8gV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNjYKKworICAgICAg
ICAqIHBsYXRmb3JtL2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDogQWRkZWQuCisKIDIw
MDktMDYtMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9h
bmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2RlZmluZSBMT0dfVEFHICJXZWJDb3JlIgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNkZWZpbmUgQU5EUk9JRF9DT01QSUxFX0hBQ0sKKworI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgorI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5o
IgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRl
ICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgorI2luY2x1ZGUg
IkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCisjaW5j
bHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVMaXN0Lmgi
CisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEtleWdlbkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5LmgiCisjaW5jbHVkZSAiSWNvbi5oIgorI2luY2x1ZGUgIkljb25EYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCisjaWYg
VVNFKEpTQykKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSmF2
YVNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiQVBJL0pTQ2xhc3NSZWYuaCIKKyNpbmNs
dWRlICJKYXZhU2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgImpuaV91dGlsaXR5LmgiCisjZW5k
aWYKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUg
ImxvYWRlci5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJNYWlu
UmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZUNh
Y2hlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgorI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgorI2lu
Y2x1ZGUgIlNjcmVlbi5oIgorI2luY2x1ZGUgIlNjcm9sbGJhci5oIgorI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU21hcnRSZXBsYWNlLmgiCisjaW5jbHVkZSAiV2lkZ2V0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDb21wbGV0ZWx5IGVtcHR5
IHN0dWJzIChtb3N0bHkgdG8gYWxsb3cgRFJUIHRvIHJ1bik6ICovCisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vIFRoaXMgZnVu
Y3Rpb24gaXMgdXNlZCBieSBKYXZhc2NyaXB0IHRvIGZpbmQgb3V0IHdoYXQgdGhlIGRlZmF1bHQg
bGFuZ3VhZ2UKKy8vIHRoZSB1c2VyIGhhcyBzZWxlY3RlZC4gSXQgaXMgdXNlZCBieSB0aGUgSlMg
b2JqZWN0IE5hdmlnYXRvci5sYW5ndWFnZQorLy8gSSBndWVzcyB0aGlzIGluZm9ybWF0aW9uIHNo
b3VsZCBiZSBtYXBwZWQgd2l0aCB0aGUgQWNjZXB0LUxhbmd1YWdlOiBIVFRQIGhlYWRlci4KK1N0
cmluZyBXZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UoKQoreworICAgIHZlcmlmaWVkT2soKTsKKyAg
ICByZXR1cm4gImVuIjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIWRlZmluZWQo
QU5EUk9JRF9QTFVHSU5TKQorLy8gSWYgcGx1Z2lucyBzdXBwb3J0IGlzIHR1cm5lZCBvbiwgZG9u
J3QgdXNlIHRoZXNlIHN0dWJzLgorCisvLyBFeGNlcHQgZm9yIHN1cHBvcnRzTUlNRVR5cGUoKSwg
dGhlc2UgUGx1Z2luIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBqYXZhc2NyaXB0J3MKKy8vIG5hdmln
YXRvci5wbHVnaW5zW10gb2JqZWN0IHRvIHByb3ZpZGUgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHBs
dWdpbnMuIFRoaXMgaXMgbW9zdAorLy8gb2Z0ZW4gdXNlZCB3aXRoIHRvIGNoZWNrIHRvIHNlZSBp
ZiB0aGUgYnJvd3NlciBzdXBwb3J0cyBGbGFzaCBvciB3aGljaCB2aWRlbworLy8gY29kZWMgdG8g
dXNlLgorLy8gVGhlIHN1cHBvcnRzTUlNRVR5cGUoKSBpcyB1c2VkIGJ5IHRoZSBGcmFtZSB0byBk
ZXRlcm1pbmUgaWYgYSBmdWxsIHNjcmVlbiBpbnN0YW5jZQorLy8gb2YgYSBwbHVnaW4gY2FuIGJl
IHVzZWQgdG8gcmVuZGVyIGEgbWltZXR5cGUgdGhhdCBpcyBub3QgbmF0aXZlIHRvIHRoZSBicm93
c2VyLgorUGx1Z2luSW5mbyogUGx1Z2luSW5mb1N0b3JlOjpjcmVhdGVQbHVnaW5JbmZvRm9yUGx1
Z2luQXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwordW5zaWduZWQgUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5Db3VudCgpIGNv
bnN0Cit7CisgICAgdmVyaWZpZWRPaygpOworICAgIHJldHVybiAwOworfQorCitTdHJpbmcgUGx1
Z2luSW5mb1N0b3JlOjpwbHVnaW5OYW1lRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBQbHVn
aW5JbmZvU3RvcmU6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICB2ZXJp
ZmllZE9rKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIHJlZnJlc2hQbHVnaW5zKGJv
b2wpCit7CisgICAgdmVyaWZpZWRPaygpOworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoQU5EUk9J
RF9QTFVHSU5TKQorCisvLyBUaGlzIGZ1bmN0aW9uIHRlbGxzIHRoZSBicmlkZ2UgdGhhdCBhIHJl
c291cmNlIHdhcyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUgYW5kIHRodXMKKy8vIHRoZSBhcHAgbWF5
IHVwZGF0ZSBwcm9ncmVzcyB3aXRoIHRoZSBhbW91bnQgb2YgZGF0YSBsb2FkZWQuCit2b2lkIENo
ZWNrQ2FjaGVPYmplY3RTdGF0dXMoRG9jTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy8vIFRo
aXMgY2xhc3MgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBGaWxlIFVwbG9hZCBmb3Jt
IGVsZW1lbnQsIGFuZAorLy8gdGhlcmVmb3JlIHJlbGF0ZXMgdG8gdGhlIGFib3ZlLiBXaGVuIGEg
ZmlsZSBoYXMgYmVlbiBzZWxlY3RlZCwgYW4gaWNvbgorLy8gcmVwcmVzZW50aW5nIHRoZSBmaWxl
IHR5cGUgY2FuIGJlIHJlbmRlcmVkIG5leHQgdG8gdGhlIGZpbGVuYW1lIG9uIHRoZQorLy8gd2Vi
IHBhZ2UuIFRoZSBpY29uIGZvciB0aGUgZmlsZSBpcyBlbmNhcHN1bGF0ZWQgd2l0aGluIHRoaXMg
Y2xhc3MuCitJY29uOjp+SWNvbigpIHsgfQordm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JikgeyB9CisKKy8vIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhl
IGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVydHk6CisvLyAtd2Via2l0LWZvY3VzLXJp
bmctY29sb3IKKy8vIEl0IGlzIGFsc28gcmVsYXRlZCB0byB0aGUgQ1NTIHByb3BlcnR5IG91dGxp
bmUtY29sb3I6CitDb2xvciBmb2N1c1JpbmdDb2xvcigpCit7CisgICAgdmVyaWZpZWRPaygpOwor
ICAgIHJldHVybiAweEZGMDAwMEZGOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisv
LyBGSVhNRSwgbm8gc3VwcG9ydCBmb3Igc3BlbGxpbmcgeWV0LgorUGFzdGVib2FyZCogUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQoreworICAgIHJldHVybiBuZXcgUGFzdGVib2FyZCgp
OworfQorCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCwgRnJh
bWUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBh
c3NSZWZQdHI8UmFuZ2U+LCBib29sLCBib29sJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworUGFz
dGVib2FyZDo6UGFzdGVib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFz
dGVib2FyZDo6flBhc3RlYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwor
Q29udGV4dE1lbnU6OkNvbnRleHRNZW51KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkgOiBt
X2hpdFRlc3RSZXN1bHQocmVzdWx0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0NvbnRleHRNZW51Ojp+Q29udGV4dE1lbnUoKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJdGVtJikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRl
eHRNZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1l
bnUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0
aW9uID0gbWVudTsKK30KKworUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnU6OnBs
YXRmb3JtRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb247Cit9CisKK0NvbnRleHRNZW51SXRlbTo6
Q29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitDb250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudSopCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQ29udGV4dE1lbnVJdGVtOjpD
b250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSwgQ29udGV4dE1lbnVBY3Rpb24sIGNv
bnN0IFN0cmluZyYsIENvbnRleHRNZW51KikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVu
dUl0ZW0oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK1BsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBDb250ZXh0TWVudUl0ZW06OnJl
bGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb247
Cit9CisKK0NvbnRleHRNZW51SXRlbVR5cGUgQ29udGV4dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBBY3Rpb25UeXBlOworfQorCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VHlwZShD
b250ZXh0TWVudUl0ZW1UeXBlKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK0NvbnRleHRNZW51QWN0aW9uIENvbnRleHRNZW51SXRlbTo6
YWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbjsKK30KKwor
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbihDb250ZXh0TWVudUFjdGlvbikKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJp
bmcgQ29udGV4dE1lbnVJdGVtOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51SXRlbTo6cGxhdGZvcm1TdWJNZW51KCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0
TWVudSopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCkKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENv
bnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZChib29sKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy8vIHN5c3RlbUJlZXAoKSBpcyBjYWxs
ZWQgYnkgdGhlIEVkaXRvciB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIHdhcyBub3RoaW5nIHRvIGNv
cHksIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20KKy8vIG90aGVyIHBsYWNlcyB0b28uCit2b2lkIHN5
c3RlbUJlZXAoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQqIFdlYkNvcmU6
OkZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQoreworICAgIHJldHVybiAwOworfQorCisK
K1dlYkNvcmU6OlN0cmluZyBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihXZWJDb3JlOjpTdHJpbmcgY29uc3QmKQoreworICAgIHJldHVybiBXZWJDb3Jl
OjpTdHJpbmcoKTsKK30KKwordm9pZCBXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKFdl
YkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpLVVJMIGNvbnN0JiwgV2ViQ29yZTo6U3RyaW5nIGNvbnN0
Jikge30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRTaXplIGRyYWdJbWFnZVNpemUodm9p
ZCopCit7CisgICAgcmV0dXJuIEludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgZGVsZXRlRHJhZ0lt
YWdlKHZvaWQqKSB7fQordm9pZCogY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKikKK3sK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCogZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKHZv
aWQqLCBmbG9hdCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCogY3JlYXRlRHJhZ0ltYWdl
SWNvbkZvckNhY2hlZEltYWdlKENhY2hlZEltYWdlKikKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Q3Vyc29yIGR1bW15Q3Vyc29yOworY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKQoreworICAg
IHJldHVybiBkdW1teUN1cnNvcjsKK30KKworY29uc3QgQ3Vyc29yJiB6b29tT3V0Q3Vyc29yKCkK
K3sKKyAgICByZXR1cm4gZHVtbXlDdXJzb3I7Cit9CisKK2NvbnN0IEN1cnNvciYgbm90QWxsb3dl
ZEN1cnNvcigpCit7CisgICAgcmV0dXJuIGR1bW15Q3Vyc29yOworfQorCit2b2lkKiBzY2FsZURy
YWdJbWFnZSh2b2lkKiwgRmxvYXRTaXplKQoreworICAgIHJldHVybiAwOworfQorCitTdHJpbmcg
c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1Rl
eHQoKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworVmVjdG9yPFN0cmluZz4gc3VwcG9y
dGVkS2V5U2l6ZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7Cit9CisKK1N0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQgaW50LCBTdHJpbmcgY29uc3QmLCBXZWJDb3JlOjpLVVJMIGNvbnN0JikKK3sK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworLy8gaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQgaXMgZGVm
aW5lZCBpbiBTbWFydFJlcGxhY2VJQ1UuY3BwOyBpbiB0aGVvcnksIHdlIGNvdWxkIHVzZSB0aGF0
IG9uZQorLy8gICAgICBidXQgd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb2YgdGhlIHJlcXVpcmVkIGlj
dSBmdW5jdGlvbnMKK2Jvb2wgaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoVUNoYXIzMiwg
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
fSAgLy8gV2ViQ29yZQorCitpbnQgTWFrZURhdGFFeGVjdXRhYmxlOworCitTdHJpbmcgS1VSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworI2lmIFVTRShKU0MpCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEJpbmRpbmdzIHsKK2Jvb2wgZGlzcGF0Y2hKTklDYWxsKEV4ZWNT
dGF0ZSosIGNvbnN0IHZvaWQqIHRhcmdldEFwcGxldFZpZXcsIGpvYmplY3Qgb2JqLCBib29sIGlz
U3RhdGljLCBKTklUeXBlIHJldHVyblR5cGUsIAorICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQs
IGp2YWx1ZSogYXJncywganZhbHVlJiByZXN1bHQsIGNvbnN0IGNoYXIqIGNhbGxpbmdVUkwsIEpT
VmFsdWVQdHImIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IH0gIC8vIG5hbWVzcGFjZSBCaW5kaW5ncworI2Vu
ZGlmCisKK2NoYXIqIGRpcm5hbWUoY29uc3QgY2hhciopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworICAgIC8vIG5ldyBhcyBvZiBTVk4gY2hhbmdlIDM4MDY4
LCBOb3YgNSwgMjAwOAorbmFtZXNwYWNlIFdlYkNvcmUgewordm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgZ2V0U3VwcG9y
dGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1Bhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGUoY29uc3QgU3RyaW5n
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitQYXNzUmVm
UHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gU2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkgaXMgY2FsbGVkIGJ5IFJlbmRlclRleHRDb250cm9sOjpj
YWxjUHJlZldpZHRocygpCisvLyBsaWtlIHRoaXM6IHNjcm9sbGJhclNpemUgPSBTY3JvbGxiYXJU
aGVtZTo6bmF0aXZlVGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCk7CisvLyB3aXRoIHRoaXMg
Y29tbWVudDoKKy8vIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBzaXplIG9mIHRoZSBzY3Jv
bGxiYXIgZnJvbSB0aGUgUmVuZGVyVGhlbWUgaW5zdGVhZC4KKy8vIHNpbmNlIG91ciB0ZXh0IGNv
bnRyb2wgZG9lc24ndCBoYXZlIHNjcm9sbGJhcnMsIHRoZSBkZWZhdWx0IHNpemUgb2YgMCB3aWR0
aCBzaG91bGQgYmUKKy8vIG9rLiBub3RJbXBsZW1lbnRlZCgpIGlzIGNvbW1lbnRlZCBvdXQgYmVs
b3cgc28gdGhhdCB3ZSBjYW4gZmluZCBvdGhlciB1bnJlc29sdmVkCisvLyB1bmltcGxlbWVudGVk
IGZ1bmN0aW9ucy4KK1Njcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUo
KQoreworICAgIC8qIG5vdEltcGxlbWVudGVkKCk7ICovCisgICAgc3RhdGljIFNjcm9sbGJhclRo
ZW1lIHRoZW1lOworICAgIHJldHVybiAmdGhlbWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK0ZpbGVMaXN0OjpGaWxlTGlzdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworRmlsZSogRmlsZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworQVhPYmplY3RDYWNoZTo6fkFYT2Jq
ZWN0Q2FjaGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy8vIFRoaXMgdmFsdWUg
dHVybnMgb24gb3Igb2ZmIHRoZSBNYWMgc3BlY2lmaWMgQWNjZXNzaWJpbGl0eSBzdXBwb3J0Lgor
Ym9vbCBBWE9iamVjdENhY2hlOjpnQWNjZXNzaWJpbGl0eUVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wg
QVhPYmplY3RDYWNoZTo6Z0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVk
ID0gZmFsc2U7CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6Y2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9i
amVjdCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBWE9iamVjdENhY2hl
OjpyZW1vdmUoUmVuZGVyT2JqZWN0KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisj
aWYgVVNFKEpTQykKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKworT3BhcXVlSlNDbGFzczo6fk9w
YXF1ZUpTQ2xhc3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK09wYXF1ZUpTQ2xh
c3NDb250ZXh0RGF0YTo6fk9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworLy8gYXMgd2UgZG9uJ3QgdXNlIGluc3BlY3Rvci8qLmNwcCwgYWRk
IHN0dWIgaGVyZS4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlUHRyIHRvSlMoRXhl
Y1N0YXRlKiwgUHJvZmlsZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
anNOdWxsKCk7Cit9CisKK0pTVmFsdWVQdHIgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUo
Y29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlUHRyJiBleGNlcHRpb24pIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4ganNOdWxsKCk7Cit9CisKK2NvbnN0IFNj
b3BlQ2hhaW5Ob2RlKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU09iamVjdCogSmF2
YVNjcmlwdENhbGxGcmFtZTo6dGhpc09iamVjdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2YVNj
cmlwdENhbGxGcmFtZTo6dHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gKERlYnVnZ2VyQ2FsbEZyYW1lOjpUeXBlKSAwOworfQorCitKYXZhU2NyaXB0Q2Fs
bEZyYW1lKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjYWxsZXIoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1N0cmluZyBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpm
dW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCit9CisKK0phdmFTY3JpcHREZWJ1Z1NlcnZlcjo6SmF2YVNjcmlwdERl
YnVnU2VydmVyKCkgOgorICAgIG1fcmVjb21waWxlVGltZXIodGhpcywgMCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6On5KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0phdmFTY3JpcHREZWJ1
Z1NlcnZlciYgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXIgc2VydmVyOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHNlcnZlcjsKK30KKwordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVt
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgaW50LCBjb25zdCBVU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cGFnZUNyZWF0ZWQoUGFnZSop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2
ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50LCBpbnQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6Ondp
bGxFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludCwgaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYK
</data>
<flag name="review"
          id="15853"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>