<?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>46958</bug_id>
          
          <creation_ts>2010-09-30 20:53:30 -0700</creation_ts>
          <short_desc>Add additional WKString API</short_desc>
          <delta_ts>2010-10-01 15:00:12 -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>WebKit2</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>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288043</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 20:53:30 -0700</bug_when>
    <thetext>Add additional WKString API to make it a bit more useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288044</commentid>
    <comment_count>1</comment_count>
      <attachid>69418</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 20:55:57 -0700</bug_when>
    <thetext>Created attachment 69418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288454</commentid>
    <comment_count>2</comment_count>
      <attachid>69511</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 13:51:48 -0700</bug_when>
    <thetext>Created attachment 69511
Updated, now includes tests!

Updated to include tests. (I am not thrilled with the test, it doesn&apos;t do any fancy utf8 stuff, but it is a first step).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288461</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 14:00:29 -0700</bug_when>
    <thetext>Attachment 69511 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/TestWebKitAPI/Tests/WebKit2/WKString.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/Tests/WebKit2/WKString.cpp:45:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288463</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-01 14:02:58 -0700</bug_when>
    <thetext>This seems to be duplicating some work that&apos;s being done in bug 45393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288494</commentid>
    <comment_count>5</comment_count>
      <attachid>69511</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-01 14:41:57 -0700</bug_when>
    <thetext>Comment on attachment 69511
Updated, now includes tests!

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

Looks good. r=me

&gt; WebKit2/Shared/WebString.h:62
&gt; +        WTF::Unicode::ConversionResult result = WTF::Unicode::convertUTF16ToUTF8(&amp;d, d + m_string.length(), &amp;p, p + bufferSize - 1, true);

What does the true mean? maybe add a comment like /* ... */ in front of it?

&gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/WKString.cpp:34
&gt; +    WKStringRef string = WKStringCreateWithUTF8CString(&quot;hello&quot;);

Shouldn&apos;t you try constructing it using a &quot;string&quot; containing UTF8 specific chars?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288499</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 14:47:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 69511 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69511&amp;action=review
&gt; 
&gt; Looks good. r=me
&gt; 
&gt; &gt; WebKit2/Shared/WebString.h:62
&gt; &gt; +        WTF::Unicode::ConversionResult result = WTF::Unicode::convertUTF16ToUTF8(&amp;d, d + m_string.length(), &amp;p, p + bufferSize - 1, true);
&gt; 
&gt; What does the true mean? maybe add a comment like /* ... */ in front of it?
&gt; 
&gt; &gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/WKString.cpp:34
&gt; &gt; +    WKStringRef string = WKStringCreateWithUTF8CString(&quot;hello&quot;);
&gt; 
&gt; Shouldn&apos;t you try constructing it using a &quot;string&quot; containing UTF8 specific chars?

Yep. I should.  I am going to ask ap to help me construct some more test cases (he is quite good at that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288507</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 15:00:12 -0700</bug_when>
    <thetext>Landed in r68930.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69418</attachid>
            <date>2010-09-30 20:55:57 -0700</date>
            <delta_ts>2010-10-01 13:51:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>stringer.diff</filename>
            <type>text/plain</type>
            <size>4761</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg2MCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDktMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWRk
aXRpb25hbCBXS1N0cmluZyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00Njk1OAorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKToKKyAgICAgICAgKFdL
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZSk6CisgICAgICAgIChXS1N0cmluZ0dldFVU
RjhDU3RyaW5nKToKKyAgICAgICAgKFdLU3RyaW5nSXNFcXVhbCk6CisgICAgICAgIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTdHJpbmcu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViU3RyaW5nLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlN0
cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJpbmc6
Om1heGltdW1VVEY4Q1N0cmluZ1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJpbmc6Omdl
dFVURjhDU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjplcXVhbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlN0cmluZzo6ZXF1YWxUb1VURjhTdHJpbmcpOgorCiAyMDEwLTA5LTMw
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmgJKHJldmlzaW9uIDY4ODYwKQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VURjguaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQzLDkgKzQ0LDMxIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTdHJpbmcoc3RyaW5nKSk7CiAgICAg
fQogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBjcmVhdGVGcm9tVVRGOFN0cmlu
Zyhjb25zdCBjaGFyKiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpKTsKKyAgICB9CisKICAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAKKyAgICBzaXpl
X3QgbWF4aW11bVVURjhDU3RyaW5nU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0
aCgpICogMyArIDE7IH0KKyAgICBzaXplX3QgZ2V0VVRGOENTdHJpbmcoY2hhciogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSkKKyAgICB7CisgICAgICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICBjaGFyKiBwID0gYnVmZmVyOworICAgICAgICBjb25z
dCBVQ2hhciogZCA9IG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsKKyAgICAgICAgV1RGOjpVbmljb2Rl
OjpDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IFdURjo6VW5pY29kZTo6Y29udmVydFVURjE2VG9V
VEY4KCZkLCBkICsgbV9zdHJpbmcubGVuZ3RoKCksICZwLCBwICsgYnVmZmVyU2l6ZSAtIDEsIHRy
dWUpOworICAgICAgICAqcCsrID0gJ1wwJzsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBXVEY6OlVu
aWNvZGU6OmNvbnZlcnNpb25PSyAmJiByZXN1bHQgIT0gV1RGOjpVbmljb2RlOjp0YXJnZXRFeGhh
dXN0ZWQpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHAgLSBidWZmZXI7
CisgICAgfQorCisgICAgYm9vbCBlcXVhbChXZWJTdHJpbmcqIG90aGVyKSB7IHJldHVybiBtX3N0
cmluZyA9PSBvdGhlci0+bV9zdHJpbmc7IH0KKyAgICBib29sIGVxdWFsVG9VVEY4U3RyaW5nKGNv
bnN0IGNoYXIqIG90aGVyKSB7IHJldHVybiBtX3N0cmluZyA9PSBTdHJpbmc6OmZyb21VVEY4KG90
aGVyKTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzsgfQogCiBwcml2YXRlOgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAkocmV2
aXNpb24gNjg4NjApCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDE3ICszNCwzMyBAQCBXS1R5cGVJRCBXS1N0cmluZ0dldFR5cGVJRCgp
CiAgICAgcmV0dXJuIHRvUmVmKFdlYlN0cmluZzo6QVBJVHlwZSk7CiB9CiAKK1dLU3RyaW5nUmVm
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKK3sKKyAg
ICBSZWZQdHI8V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZUZyb21VVEY4
U3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIHRvUmVmKHdlYlN0cmluZy5yZWxlYXNlKCkubGVh
a1JlZigpKTsKK30KKwogYm9vbCBXS1N0cmluZ0lzRW1wdHkoV0tTdHJpbmdSZWYgc3RyaW5nUmVm
KQogewogICAgIHJldHVybiB0b1dLKHN0cmluZ1JlZiktPmlzRW1wdHkoKTsKIH0KIAotYm9vbCBX
S1N0cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgZmlyc3RTdHJpbmcsIFdLU3RyaW5nUmVmIHNlY29u
ZFN0cmluZykKK3NpemVfdCBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoV0tTdHJp
bmdSZWYgc3RyaW5nUmVmKQoreworICAgIHJldHVybiB0b1dLKHN0cmluZ1JlZiktPm1heGltdW1V
VEY4Q1N0cmluZ1NpemUoKTsKK30KKworc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoV0tT
dHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQorewor
ICAgIHJldHVybiB0b1dLKHN0cmluZ1JlZiktPmdldFVURjhDU3RyaW5nKGJ1ZmZlciwgYnVmZmVy
U2l6ZSk7Cit9CisKK2Jvb2wgV0tTdHJpbmdJc0VxdWFsKFdLU3RyaW5nUmVmIGFSZWYsIFdLU3Ry
aW5nUmVmIGJSZWYpCit7CisgICAgcmV0dXJuIHRvV0soYVJlZiktPmVxdWFsKHRvV0soYlJlZikp
OworfQorCitib29sIFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgYVJl
ZiwgY29uc3QgY2hhciogYikKIHsKLSAgICBpZiAoZmlyc3RTdHJpbmcgPT0gc2Vjb25kU3RyaW5n
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWZpcnN0U3RyaW5nIHx8ICFzZWNvbmRT
dHJpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHRvV0so
Zmlyc3RTdHJpbmcpLT5zdHJpbmcoKSA9PSB0b1dLKHNlY29uZFN0cmluZyktPnN0cmluZygpOwor
ICAgIHJldHVybiB0b1dLKGFSZWYpLT5lcXVhbFRvVVRGOFN0cmluZyhiKTsKIH0KSW5kZXg6IFdl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tTdHJpbmcuaAkocmV2aXNpb24gNjg4NjApCisrKyBXZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCwxNSBAQCBleHRlcm4g
IkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLU3RyaW5nR2V0VHlwZUlEKCk7CiAKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFy
KiBzdHJpbmcpOworCiBXS19FWFBPUlQgYm9vbCBXS1N0cmluZ0lzRW1wdHkoV0tTdHJpbmdSZWYg
c3RyaW5nKTsKLVdLX0VYUE9SVCBib29sIFdLU3RyaW5nSXNFcXVhbChXS1N0cmluZ1JlZiBmaXJz
dFN0cmluZywgV0tTdHJpbmdSZWYgc2Vjb25kU3RyaW5nKTsKKworV0tfRVhQT1JUIHNpemVfdCBX
S1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoV0tTdHJpbmdSZWYgc3RyaW5nKTsKK1dL
X0VYUE9SVCBzaXplX3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcs
IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpOworCitXS19FWFBPUlQgYm9vbCBXS1N0
cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgYSwgV0tTdHJpbmdSZWYgYik7CitXS19FWFBPUlQgYm9v
bCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKFdLU3RyaW5nUmVmIGEsIGNvbnN0IGNoYXIq
IGIpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69511</attachid>
            <date>2010-10-01 13:51:48 -0700</date>
            <delta_ts>2010-10-01 14:41:57 -0700</delta_ts>
            <desc>Updated, now includes tests!</desc>
            <filename>stringer2.diff</filename>
            <type>text/plain</type>
            <size>11529</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODkyMikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWRk
aXRpb25hbCBXS1N0cmluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2OTU4CisKKyAgICAgICAgQVBJIFRlc3Q6IFdlYktpdDIvV0tTdHJpbmcK
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgIChXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyk6CisgICAgICAgIChXS1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUpOgorICAgICAgICAoV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyk6CisgICAgICAg
IChXS1N0cmluZ0lzRXF1YWwpOgorICAgICAgICAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
Zyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmg6CisgICAgICAgICogU2hhcmVk
L1dlYlN0cmluZy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJpbmc6OmNyZWF0ZUZyb21VVEY4
U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjptYXhpbXVtVVRGOENTdHJpbmdT
aXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjpnZXRVVEY4Q1N0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlN0cmluZzo6ZXF1YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdHJp
bmc6OmVxdWFsVG9VVEY4U3RyaW5nKToKKwogMjAxMC0xMC0wMSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1NoYXJlZC9XZWJTdHJpbmcuaAkocmV2aXNpb24gNjg5MTkpCisrKyBXZWJLaXQyL1NoYXJlZC9X
ZWJTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApAQCAtNDMsOSArNDQsMzEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlN0cmluZyhzdHJpbmcpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJTdHJpbmc+IGNyZWF0ZUZyb21VVEY4U3RyaW5nKGNvbnN0IGNoYXIqIHN0cmlu
ZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RyaW5nKFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSkpOworICAgIH0KKwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KIAorICAgIHNpemVfdCBtYXhpbXVtVVRGOENTdHJp
bmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCkgKiAzICsgMTsgfQorICAg
IHNpemVfdCBnZXRVVEY4Q1N0cmluZyhjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQor
ICAgIHsKKyAgICAgICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGNoYXIqIHAgPSBidWZmZXI7CisgICAgICAgIGNvbnN0IFVDaGFyKiBkID0gbV9zdHJp
bmcuY2hhcmFjdGVycygpOworICAgICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNpb25SZXN1bHQg
cmVzdWx0ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRGMTZUb1VURjgoJmQsIGQgKyBtX3N0cmlu
Zy5sZW5ndGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSwgdHJ1ZSk7CisgICAgICAgICpwKysg
PSAnXDAnOworICAgICAgICBpZiAocmVzdWx0ICE9IFdURjo6VW5pY29kZTo6Y29udmVyc2lvbk9L
ICYmIHJlc3VsdCAhPSBXVEY6OlVuaWNvZGU6OnRhcmdldEV4aGF1c3RlZCkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gcCAtIGJ1ZmZlcjsKKyAgICB9CisKKyAgICBib29s
IGVxdWFsKFdlYlN0cmluZyogb3RoZXIpIHsgcmV0dXJuIG1fc3RyaW5nID09IG90aGVyLT5tX3N0
cmluZzsgfQorICAgIGJvb2wgZXF1YWxUb1VURjhTdHJpbmcoY29uc3QgY2hhciogb3RoZXIpIHsg
cmV0dXJuIG1fc3RyaW5nID09IFN0cmluZzo6ZnJvbVVURjgob3RoZXIpOyB9CisKICAgICBjb25z
dCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAKIHByaXZhdGU6
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCShyZXZpc2lvbiA2ODkxOSkKKysrIFdl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTcg
KzM0LDMzIEBAIFdLVHlwZUlEIFdLU3RyaW5nR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9SZWYo
V2ViU3RyaW5nOjpBUElUeXBlKTsKIH0KIAorV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQoreworICAgIFJlZlB0cjxXZWJTdHJpbmc+
IHdlYlN0cmluZyA9IFdlYlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoc3RyaW5nKTsKKyAg
ICByZXR1cm4gdG9SZWYod2ViU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCiBib29s
IFdLU3RyaW5nSXNFbXB0eShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7CiAgICAgcmV0dXJuIHRv
V0soc3RyaW5nUmVmKS0+aXNFbXB0eSgpOwogfQogCi1ib29sIFdLU3RyaW5nSXNFcXVhbChXS1N0
cmluZ1JlZiBmaXJzdFN0cmluZywgV0tTdHJpbmdSZWYgc2Vjb25kU3RyaW5nKQorc2l6ZV90IFdL
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCit7
CisgICAgcmV0dXJuIHRvV0soc3RyaW5nUmVmKS0+bWF4aW11bVVURjhDU3RyaW5nU2l6ZSgpOwor
fQorCitzaXplX3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYs
IGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCit7CisgICAgcmV0dXJuIHRvV0soc3Ry
aW5nUmVmKS0+Z2V0VVRGOENTdHJpbmcoYnVmZmVyLCBidWZmZXJTaXplKTsKK30KKworYm9vbCBX
S1N0cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdSZWYgYlJlZikKK3sKKyAg
ICByZXR1cm4gdG9XSyhhUmVmKS0+ZXF1YWwodG9XSyhiUmVmKSk7Cit9CisKK2Jvb2wgV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhXS1N0cmluZ1JlZiBhUmVmLCBjb25zdCBjaGFyKiBiKQog
ewotICAgIGlmIChmaXJzdFN0cmluZyA9PSBzZWNvbmRTdHJpbmcpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmICghZmlyc3RTdHJpbmcgfHwgIXNlY29uZFN0cmluZykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAKLSAgICByZXR1cm4gdG9XSyhmaXJzdFN0cmluZyktPnN0cmlu
ZygpID09IHRvV0soc2Vjb25kU3RyaW5nKS0+c3RyaW5nKCk7CisgICAgcmV0dXJuIHRvV0soYVJl
ZiktPmVxdWFsVG9VVEY4U3RyaW5nKGIpOwogfQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1N0cmluZy5o
CShyZXZpc2lvbiA2ODkxOSkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDE1IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQg
V0tUeXBlSUQgV0tTdHJpbmdHZXRUeXBlSUQoKTsKIAorV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZyk7CisKIFdLX0VY
UE9SVCBib29sIFdLU3RyaW5nSXNFbXB0eShXS1N0cmluZ1JlZiBzdHJpbmcpOwotV0tfRVhQT1JU
IGJvb2wgV0tTdHJpbmdJc0VxdWFsKFdLU3RyaW5nUmVmIGZpcnN0U3RyaW5nLCBXS1N0cmluZ1Jl
ZiBzZWNvbmRTdHJpbmcpOworCitXS19FWFBPUlQgc2l6ZV90IFdLU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmcpOworV0tfRVhQT1JUIHNpemVfdCBXS1N0
cmluZ0dldFVURjhDU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZywgY2hhciogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSk7CisKK1dLX0VYUE9SVCBib29sIFdLU3RyaW5nSXNFcXVhbChXS1N0cmlu
Z1JlZiBhLCBXS1N0cmluZ1JlZiBiKTsKK1dLX0VYUE9SVCBib29sIFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgYSwgY29uc3QgY2hhciogYik7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDY4OTE5KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NjMsNyArMTk2Myw2IEBACiAJCQlpc2EgPSBQ
QlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFERUI5MUIxMDg3MzNEQTUw
MDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYktp
dDIiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4xIjsKLQkJCWRldmVs
b3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwog
CQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODky
MikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEwLTEwLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFkZGl0aW9uYWwgV0tT
dHJpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00Njk1OAorCisgICAgICAgIEFkZCBiYXNpYyBXS1N0cmluZ1JlZiB0ZXN0cy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0cmluZy5jcHA6IEFk
ZGVkLgorCiAyMDEwLTEwLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA2ODkxMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNSw2ICsxNSw3IEBACiAJCUJDOTA5NjRFMTI1NTYyMEMwMDA4Mzc1NiAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzkwOTY0RDEyNTU2MjBDMDAwODM3NTYgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrICovOyB9OwogCQlCQzkwOTc3QTEyNTU3MUFCMDAwODM3NTYgLyogUGFnZUxvYWRCYXNp
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkw
OTc3OTEyNTU3MUFCMDAwODM3NTYgLyogUGFnZUxvYWRCYXNpYy5jcHAgKi87IH07CiAJCUJDOTA5
Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBiYXNpYy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDk3NzgxMjU1NzFBQjAwMDgzNzU2
IC8qIGJhc2ljLTEuaHRtbCAqLzsgfTsKKwkJQkM5MDk5NUUxMjU2N0JDMTAwMDgzNzU2IC8qIFdL
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOTA5OTVEMTI1NjdCQzEwMDA4Mzc1NiAvKiBXS1N0cmluZy5jcHAgKi87IH07CiAJCUJDQTYx
REI1MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTYxREI0MTE3MDBFRkQwMDQ2MEQx
RSAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKIAkJQkNCOUU5RjExMTIzNUJERTAwQTEzN0Uw
IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQjlFOUYwMTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFtZXdvcmsg
Ki87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KQEAgLTU4LDYgKzU5LDcgQEAK
IAkJQkM5MDk2NEQxMjU1NjIwQzAwMDgzNzU2IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4v
V2ViS2l0QnVpbGQvRGVidWcvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUJDOTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAvKiBiYXNpYy0xLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYmFzaWMtMS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8qIFBhZ2VMb2Fk
QmFzaWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUxvYWRC
YXNpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA5OTVEMTI1NjdCQzEw
MDA4Mzc1NiAvKiBXS1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS1N0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTYxREI0
MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0g
V2ViS2l0Mi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUJDQjlFN0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0c0NvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdHNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDQjlFN0ZBMTEyMzU5QTMwMEExMzdFMCAvKiBUZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzNyw2ICsxMzksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5MDk3N0Ix
MjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLywKIAkJCQlCQzkwOTc3OTEyNTU3MUFCMDAw
ODM3NTYgLyogUGFnZUxvYWRCYXNpYy5jcHAgKi8sCisJCQkJQkM5MDk5NUQxMjU2N0JDMTAwMDgz
NzU2IC8qIFdLU3RyaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2ViS2l0MjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjYsNiArMjI5LDcgQEAKIAkJCQlCQzkwOTU1RDEy
NTU0OEFBMDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM5MDk2NEMxMjU1NjFCRjAwMDgzNzU2IC8qIFZlY3RvckJhc2ljLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDOTA5NzdBMTI1NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2ljLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDOTA5OTVFMTI1NjdCQzEwMDA4Mzc1NiAvKiBXS1N0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XS1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dLU3RyaW5nLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0cmluZy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K1RFU1QoV0tTdHJpbmcpCit7CisgICAgV0tTdHJpbmdSZWYgc3RyaW5nID0gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImhlbGxvIik7CisgICAgVEVTVF9BU1NFUlQoIVdLU3RyaW5nSXNF
bXB0eShzdHJpbmcpKTsKKyAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWwoc3RyaW5nLCBz
dHJpbmcpKTsKKyAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN0
cmluZywgImhlbGxvIikpOworICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShzdHJpbmcpID09IDE2KTsKKworICAgIHNpemVfdCBtYXhTaXplID0gV0tTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7CisgICAgY2hhciogYnVmZmVyID0g
KGNoYXIqKW1hbGxvYyhtYXhTaXplKTsKKyAgICAKKyAgICBzaXplX3QgYWN0dWFsU2l6ZSA9IFdL
U3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIsIG1heFNpemUpOworICAgIFRFU1Rf
QVNTRVJUKGFjdHVhbFNpemUgPT0gNik7CisgICAgVEVTVF9BU1NFUlQoc3RyY21wKGJ1ZmZlciwg
ImhlbGxvIikgPT0gMCk7CisKKyAgICBmcmVlKGJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="59216"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>