<?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>76761</bug_id>
          
          <creation_ts>2012-01-20 18:02:20 -0800</creation_ts>
          <short_desc>[BlackBerry] Credential backing store implementation</short_desc>
          <delta_ts>2012-01-30 04:50:20 -0800</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>Other</rep_platform>
          <op_sys>Other</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>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jonathan Dong">jonathan.dong.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539974</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-01-20 18:02:20 -0800</bug_when>
    <thetext>files: Source/WebCore/platform/network/blackberry/CredentialBackingStore.(h|cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539980</commentid>
    <comment_count>1</comment_count>
      <attachid>123421</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-01-20 18:13:36 -0800</bug_when>
    <thetext>Created attachment 123421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540009</commentid>
    <comment_count>2</comment_count>
      <attachid>123421</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-01-20 18:56:59 -0800</bug_when>
    <thetext>Comment on attachment 123421
Patch

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

I think it can be improved a bit more, r- for now.

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:66
&gt; +        // create table logins

In  general: Make comments look like sentences by starting with a capital letter and ending with a period.

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:104
&gt; +    // prepare the statments.

statements.

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:105
&gt; +

Why empty line?

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:144
&gt; +    m_updateStatement =0;

= 0

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:254
&gt; +

Why empty line?

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:255
&gt; +    return credential;

Why do we need a temp var here?

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:288
&gt; +        return false;

This pattern is repeated a lot. Can you come up with macro(s)? If done correctly it will be much shorter and you don&apos;t need braces (go into macro).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544829</commentid>
    <comment_count>3</comment_count>
      <attachid>124484</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-01-29 18:42:53 -0800</bug_when>
    <thetext>Created attachment 124484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544856</commentid>
    <comment_count>4</comment_count>
      <attachid>124484</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-29 20:49:50 -0800</bug_when>
    <thetext>Comment on attachment 124484
Patch

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

it loosk good, r+

Please re-upload with the suggestions addressed if you think they are convenient, and add &quot;Reviewed by Antonio Gomes&quot; to the new patch/changelog. No need to another review round, only cq+ needed.

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:70
&gt; +        // Create table logins

I would drop this comment. it looks unneeded given the line below it. Also lacks a &quot;.&quot; at the end :-)

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:74
&gt; +        // Create index for table logins

ditto

&gt; Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp:77
&gt; +    } else { // Initiate CredentialStorage

. in the end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544874</commentid>
    <comment_count>5</comment_count>
      <attachid>124493</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-01-29 21:34:10 -0800</bug_when>
    <thetext>Created attachment 124493
patch for cq after Antonio&apos;s review, also thanks Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544875</commentid>
    <comment_count>6</comment_count>
      <attachid>124493</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-29 21:34:51 -0800</bug_when>
    <thetext>Comment on attachment 124493
patch for cq after Antonio&apos;s review, also thanks Rob.

Rejecting attachment 124493 from commit-queue.

jonathan.dong@torchmobile.com.cn does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544878</commentid>
    <comment_count>7</comment_count>
      <attachid>124494</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-01-29 21:43:08 -0800</bug_when>
    <thetext>Created attachment 124494
patch for cq

re-attach the patch as wrongly set the commit-queue flag for the last patch. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545011</commentid>
    <comment_count>8</comment_count>
      <attachid>124494</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-01-30 04:35:24 -0800</bug_when>
    <thetext>Comment on attachment 124494
patch for cq

Use cq</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545016</commentid>
    <comment_count>9</comment_count>
      <attachid>124494</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 04:50:13 -0800</bug_when>
    <thetext>Comment on attachment 124494
patch for cq

Clearing flags on attachment: 124494

Committed r106234: &lt;http://trac.webkit.org/changeset/106234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545017</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 04:50:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123421</attachid>
            <date>2012-01-20 18:13:36 -0800</date>
            <delta_ts>2012-01-29 18:42:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76761-20120121101334.patch</filename>
            <type>text/plain</type>
            <size>11996</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyM2E5NmQ1YjNhMzY4
Y2UxOWJlMGU3ODA1MzA3NDhlNTAzODhmZC4uZTY0NDljM2NjYjIxN2U0MGZhYWYyODM1YzY2ZGFm
NjU3YzA4ZjdhMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAxLTIwICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIENyZWRlbnRpYWwgYmFja2luZyBzdG9yZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBj
cmVkZW50aWFsIGJhY2tpbmcgc3RvcmUgZGF0YWJhc2UgYW5kIHJlbGF0ZWQKKyAgICAgICAgb3Bl
cmF0aW9ucyBpbiBjbGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjphZGRMb2dpbik6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjp1cGRhdGVMb2dpbik6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpoYXNMb2dpbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpnZXRMb2dpbik6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpyZW1vdmVMb2dpbik6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbGVhcik6CisKIDIwMTItMDEtMjAgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxDbGllbnRzRm9ySW52YWxpZGF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYmJiMmJmYzVlMzYz
ZWI5OGI4NjQzNDhmNDNhZmM0NDQ1ZWYzYWRhOC4uMTA2YmFlMzRhM2UxMDA2NTAxMmU4MzY3NTFk
NTlhYWJkZDQ1NDVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNw
cApAQCAtNDksNjkgKzQ5LDI0NiBAQCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpDcmVkZW50aWFs
QmFja2luZ1N0b3JlKCkKIAogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUoKQogeworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2Rh
dGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihj
b25zdCBTdHJpbmcmIGRiUGF0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGJQYXRoKTsKKyAgICBB
U1NFUlQoIW1fZGF0YWJhc2UuaXNPcGVuKCkpOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4oZGJQYXRoKSkgeworICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGZpbGUgJXMgZm9yIGxvZ2lu
IGRhdGFiYXNlIiwgZGJQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSkgewor
ICAgICAgICAvLyBjcmVhdGUgdGFibGUgbG9naW5zCisgICAgICAgIGlmICghbV9kYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIGxvZ2lucyAob3JpZ2luX3VybCBWQVJDSEFSIE5P
VCBOVUxMLCBob3N0IFZBUkNIQVIgTk9UIE5VTEwsIHBvcnQgSU5URUdFUiwgc2VydmljZV90eXBl
IElOVEVHRVIgTk9UIE5VTEwsIHJlYWxtIFZBUkNIQVIsIGF1dGhfc2NoZW1lIElOVEVHRVIgTk9U
IE5VTEwsIHVzZXJuYW1lIFZBUkNIQVIsIHBhc3N3b3JkIEJMT0IpICIpKSB7CisgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdGFibGUgbG9naW5zIGZvciBsb2dpbiBkYXRh
YmFzZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gY3JlYXRlIGluZGV4IGZvciB0YWJsZSBsb2dpbnMKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggbG9naW5zX3NpZ25vbiBPTiBsb2dpbnMgKGhv
c3QpIikpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbmRleCBm
b3IgdGFibGUgbG9naW5zIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeyAvLyBpbml0aWF0ZSBDcmVkZW50aWFsU3RvcmFnZQorICAgICAgICBTUUxp
dGVTdGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgIlNFTEVDVCBvcmlnaW5fdXJsLCBob3N0LCBw
b3J0LCBzZXJ2aWNlX3R5cGUsIHJlYWxtLCBhdXRoX3NjaGVtZSwgdXNlcm5hbWUsIHBhc3N3b3Jk
IEZST00gbG9naW5zIik7CisgICAgICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0
T2spIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgcXVlcnkgc3Rh
dGVtZW50IHRvIGluaXRpYXRlIENyZWRlbnRpYWxTdG9yYWdlIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgp
OworICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdykgeworICAgICAgICAgICAg
U3RyaW5nIHN0clVybCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMSk7CisgICAgICAgICAgICBTdHJp
bmcgc3RySG9zdCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMik7CisgICAgICAgICAgICBpbnQgaW50
UG9ydCA9IHF1ZXJ5LmdldENvbHVtbkludCgzKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgc2VydmljZVR5cGUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJUeXBlPihxdWVyeS5nZXRDb2x1bW5JbnQoNCkpOworICAgICAgICAgICAgU3RyaW5nIHN0clJl
YWxtID0gcXVlcnkuZ2V0Q29sdW1uVGV4dCg1KTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhTY2hlbWUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4ocXVlcnkuZ2V0Q29sdW1uSW50KDYpKTsKKyAgICAg
ICAgICAgIFN0cmluZyBzdHJVc2VyTmFtZSA9IHF1ZXJ5LmdldENvbHVtblRleHQoNyk7CisgICAg
ICAgICAgICBTdHJpbmcgc3RyUGFzc3dvcmQgPSBkZWNyeXB0ZWRTdHJpbmcocXVlcnkuZ2V0Q29s
dW1uVGV4dCg4KSk7CisKKyAgICAgICAgICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgc3Ry
VXJsKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2Uoc3RySG9z
dCwgaW50UG9ydCwgc2VydmljZVR5cGUsIHN0clJlYWxtLCBhdXRoU2NoZW1lKTsKKyAgICAgICAg
ICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChzdHJVc2VyTmFtZSwgc3RyUGFzc3dvcmQsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CisgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFn
ZTo6c2V0KGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSwgdXJsKTsKKworICAgICAgICAgICAg
cmVzdWx0ID0gcXVlcnkuc3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gcHJlcGFy
ZSB0aGUgc3RhdG1lbnRzLgorCisgICAgbV9hZGRTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIGxvZ2lucyAob3JpZ2luX3Vy
bCwgaG9zdCwgcG9ydCwgc2VydmljZV90eXBlLCByZWFsbSwgYXV0aF9zY2hlbWUsIHVzZXJuYW1l
LCBwYXNzd29yZCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSIpOworICAgIGlmICht
X2FkZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBhZGRMb2dpbiBzdGF0ZW1lbnQiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0
YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIGxvZ2lucyBTRVQgdXNlcm5hbWUgPSA/LCBwYXNz
d29yZCA9ID8gV0hFUkUgb3JpZ2luX3VybCA9ID8gQU5EIGhvc3QgPSA/IEFORCBwb3J0ID0gPyBB
TkQgc2VydmljZV90eXBlID0gPyBBTkQgcmVhbG0gPSA/IEFORCBhdXRoX3NjaGVtZSA9ID8iKTsK
KyAgICBpZiAobV91cGRhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgdXBkYXRlTG9naW4gc3RhdGVtZW50
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2hhc1N0YXRlbWVudCA9
IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGxv
Z2lucyBXSEVSRSBob3N0ID0gPyBBTkQgcG9ydCA9ID8gQU5EIHNlcnZpY2VfdHlwZSA9ID8gQU5E
IHJlYWxtID0gPyBBTkQgYXV0aF9zY2hlbWUgPSA/Iik7CisgICAgaWYgKG1faGFzU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBwcmVwYXJlIGhhc0xvZ2luIHN0YXRlbWVudCIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgbV9nZXRTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1QgdXNlcm5hbWUsIHBhc3N3b3JkIEZST00gbG9naW5zIFdIRVJFIGhvc3QgPSA/
IEFORCBwb3J0ID0gPyBBTkQgc2VydmljZV90eXBlID0gPyBBTkQgcmVhbG0gPSA/IEFORCBhdXRo
X3NjaGVtZSA9ID8iKTsKKyAgICBpZiAobV9nZXRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJl
c3VsdE9rKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgZ2V0TG9naW4g
c3RhdGVtZW50Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3JlbW92
ZVN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9N
IGxvZ2lucyBXSEVSRSBob3N0ID0gPyBBTkQgcG9ydCA9ID8gQU5EIHNlcnZpY2VfdHlwZSA9ID8g
QU5EIHJlYWxtID0gPyBBTkQgYXV0aF9zY2hlbWUgPSA/Iik7CisgICAgaWYgKG1fcmVtb3ZlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgeworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBwcmVwYXJlIHJlbW92ZUxvZ2luIHN0YXRlbWVudCIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZTo6Y2xvc2UoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZGVsZXRl
IG1fYWRkU3RhdGVtZW50OworICAgIG1fYWRkU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV91
cGRhdGVTdGF0ZW1lbnQ7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQgPTA7CisgICAgZGVsZXRlIG1f
aGFzU3RhdGVtZW50OworICAgIG1faGFzU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9nZXRT
dGF0ZW1lbnQ7CisgICAgbV9nZXRTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX3JlbW92ZVN0
YXRlbWVudDsKKyAgICBtX3JlbW92ZVN0YXRlbWVudCA9IDA7CisKKyAgICBpZiAobV9kYXRhYmFz
ZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogfQogCiBib29sIENyZWRl
bnRpYWxCYWNraW5nU3RvcmU6OmFkZExvZ2luKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3RlY3Rpb25T
cGFjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNyZWRlbnRpYWwpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLmlzT3BlbigpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5z
IikpOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFtX2FkZFN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9hZGRTdGF0
bWVudC0+YmluZFRleHQoMSwgdXJsLnN0cmluZygpKTsKKyAgICBtX2FkZFN0YXRtZW50LT5iaW5k
VGV4dCgyLCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpKTsKKyAgICBtX2FkZFN0YXRtZW50LT5iaW5k
SW50KDMsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fYWRkU3RhdG1lbnQtPmJpbmRJ
bnQoNCwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7Cisg
ICAgbV9hZGRTdGF0bWVudC0+YmluZFRleHQoNSwgcHJvdGVjdGlvblNwYWNlLnJlYWxtKCkpOwor
ICAgIG1fYWRkU3RhdG1lbnQtPmJpbmRJbnQoNiwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9u
U3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworICAgIG1fYWRkU3RhdG1lbnQtPmJpbmRU
ZXh0KDcsIGNyZWRlbnRpYWwudXNlcigpKTsKKyAgICBtX2FkZFN0YXRtZW50LT5iaW5kQmxvYig4
LCBlbmNyeXB0ZWRTdHJpbmcoY3JlZGVudGlhbC5wYXNzd29yZCgpKSk7CisKKyAgICBpbnQgcmVz
dWx0ID0gbV9hZGRTdGF0bWVudC0+c3RlcCgpOworICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0
RG9uZSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBhZGQgbG9naW4gaW5mbyBpbnRv
IHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6
OnVwZGF0ZUxvZ2luKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHVybCk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3RlY3Rpb25TcGFjZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNyZWRlbnRpYWwpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5zIikpOwogCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3VwZGF0ZVN0YXRl
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIHVybC5zdHJpbmcoKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGNy
ZWRlbnRpYWwudXNlcigpKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZEJsb2IoMywgZW5j
cnlwdGVkU3RyaW5nKGNyZWRlbnRpYWwucGFzc3dvcmQoKSkpOworICAgIG1fdXBkYXRlU3RhdGVt
ZW50LT5iaW5kVGV4dCg0LCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpKTsKKyAgICBtX3VwZGF0ZVN0
YXRlbWVudC0+YmluZEludCg1LCBwcm90ZWN0aW9uU3BhY2UucG9ydCgpKTsKKyAgICBtX3VwZGF0
ZVN0YXRlbWVudC0+YmluZEludCg2LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5z
ZXJ2ZXJUeXBlKCkpKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoNywgcHJvdGVj
dGlvblNwYWNlLnJlYWxtKCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kSW50KDgsIHN0
YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpKTsK
KworICAgIGludCByZXN1bHQgPSBtX3VwZGF0ZVN0YXRlbWVudC0+c3RlcCgpOworICAgIGlmIChy
ZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB1
cGRhdGUgbG9naW4gaW5mbyBpbiB0YWJsZSBsb2dpbnMgLSAlaSIsIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDcmVk
ZW50aWFsQmFja2luZ1N0b3JlOjpoYXNMb2dpbihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBB
U1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVF
eGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX2hh
c1N0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRU
ZXh0KDEsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1faGFzU3RhdGVtZW50LT5iaW5k
SW50KDIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1faGFzU3RhdGVtZW50LT5iaW5k
SW50KDMsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSkpOwor
ICAgIG1faGFzU3RhdGVtZW50LT5iaW5kVGV4dCg0LCBwcm90ZWN0aW9uU3BhY2UucmVhbG0oKSk7
CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoNSwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50IHJlc3VsdCA9IG1f
aGFzU3RhdGVtZW50LT5zdGVwKCk7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZXhlY3V0ZSBzZWxlY3QgbG9naW4gaW5mbyBm
cm9tIHRhYmxlIGxvZ2lucyBpbiBoYXNMb2dpbiAtICVpIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2hhc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQo
MCkpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogQ3JlZGVu
dGlhbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpnZXRMb2dpbihjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNl
KTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJh
c2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIENyZWRlbnRpYWwoKTsKKyAgICBpZiAoIW1fZ2V0U3RhdGVtZW50KQorICAgICAgICBy
ZXR1cm4gQ3JlZGVudGlhbCgpOworCisgICAgbV9nZXRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHBy
b3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kSW50KDIsIHBy
b3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kSW50KDMsIHN0
YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSkpOworICAgIG1fZ2V0
U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBwcm90ZWN0aW9uU3BhY2UucmVhbG0oKSk7CisgICAgbV9n
ZXRTdGF0ZW1lbnQtPmJpbmRJbnQoNSwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50IHJlc3VsdCA9IG1fZ2V0U3RhdGVt
ZW50LT5zdGVwKCk7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gZXhlY3V0ZSBzZWxlY3QgbG9naW4gaW5mbyBmcm9tIHRhYmxl
IGxvZ2lucyBpbiBnZXRMb2dpbiAtICVpIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIENyZWRl
bnRpYWwoKTsKKyAgICB9CisKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwobV9nZXRTdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCgwKSwgZGVjcnlwdGVkU3RyaW5nKG1fZ2V0U3RhdGVtZW50LmdldENv
bHVtblRleHQoMSkpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOworCisgICAgcmV0
dXJuIGNyZWRlbnRpYWw7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6cmVtb3Zl
TG9naW4oY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHByb3RlY3Rpb25TcGFjZSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVu
KCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fcmVtb3Zl
U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworCisgICAgbV9yZW1vdmVT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fcmVt
b3ZlU3RhdGVtZW50LT5iaW5kSW50KDIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1f
cmVtb3ZlU3RhdGVtZW50LT5iaW5kSW50KDMsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNw
YWNlLnNlcnZlclR5cGUoKSkpOworICAgIG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kVGV4dCg0LCBw
cm90ZWN0aW9uU3BhY2UucmVhbG0oKSk7CisgICAgbV9yZW1vdmVTdGF0ZW1lbnQtPmJpbmRJbnQo
NSwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUo
KSkpOworCisgICAgaW50IHJlc3VsdCA9IG1fcmVtb3ZlU3RhdGVtZW50LT5zdGVwKCk7CisgICAg
aWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHJlbW92ZSBsb2dpbiBpbmZvIGZyb20gdGFibGUgbG9naW5zIC0gJWkiLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6Y2xlYXIoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5zIikpOworCisgICAgaWYg
KCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJERUxFVEUgKiBGUk9NIGxvZ2lucyIpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNsZWFyIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwog
fQogCiBTdHJpbmcgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6ZW5jcnlwdGVkU3RyaW5nKGNvbnN0
IFN0cmluZyYgcGxhaW5UZXh0KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124484</attachid>
            <date>2012-01-29 18:42:53 -0800</date>
            <delta_ts>2012-01-29 21:43:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76761-20120130104251.patch</filename>
            <type>text/plain</type>
            <size>12047</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ0MjYxN2UzZGNkYWJj
YWRkNGUwM2NjZjI0ZDVmYTU2ZmNjYThjOS4uYWFiN2YzNGIyYjUyNjEzYmIxZDFkMTM4NjUzNjcz
M2U0MWU3OWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAxLTI5ICBKb25h
dGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
W0JsYWNrQmVycnldIENyZWRlbnRpYWwgYmFja2luZyBzdG9yZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBj
cmVkZW50aWFsIGJhY2tpbmcgc3RvcmUgZGF0YWJhc2UgYW5kIHJlbGF0ZWQKKyAgICAgICAgb3Bl
cmF0aW9ucyBpbiBjbGFzcyBDcmVkZW50aWFsQmFja2luZ1N0b3JlLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjphZGRMb2dpbik6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjp1cGRhdGVMb2dpbik6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpoYXNMb2dpbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpnZXRMb2dpbik6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpyZW1vdmVMb2dpbik6CisgICAgICAgIChXZWJD
b3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbGVhcik6CisKIDIwMTItMDEtMjkgIE5vZWwg
R29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNl
IGRlY29kaW5nIHN3aXp6bGUgb25seSBvbiBsaWJqcGVnLXR1cmJvIDEuMS45MCsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFs
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAppbmRleCBiYmIyYmZjNWUzNjNlYjk4Yjg2
NDM0OGY0M2FmYzQ0NDVlZjNhZGE4Li5kM2JjYmUwMjU3Y2QwNGU4Zjg4YTM5YjQxMTllYjdjMTU2
ZjRiNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCkBAIC0y
OCw2ICsyOCwxMiBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgogCisjZGVmaW5lIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHN0YXRl
bWVudCwgcmV0dXJuVmFsdWUsIC4uLikgXAorICAgIGlmIChzdGF0ZW1lbnQpIHsgXAorICAgICAg
ICBMT0dfRVJST1IoX19WQVJfQVJHU19fKTsgXAorICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
IFwKKyAgICB9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3JlZGVudGlhbEJhY2tpbmdTdG9y
ZSogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKQpAQCAtNDksNjkgKzU1LDIxMyBA
QCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlKCkKIAogQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNraW5nU3RvcmUoKQogeworICAgIGlm
IChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9CiAK
IGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihjb25zdCBTdHJpbmcmIGRiUGF0aCkK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGJQYXRoKTsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
SEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJhc2Uub3BlbihkYlBhdGgpLCBmYWxzZSwK
KyAgICAgICAgIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGZpbGUgJXMgZm9yIGxvZ2luIGRhdGFi
YXNlIiwgZGJQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxl
RXhpc3RzKCJsb2dpbnMiKSkgeworICAgICAgICAvLyBDcmVhdGUgdGFibGUgbG9naW5zCisgICAg
ICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgbG9naW5zIChvcmlnaW5fdXJsIFZBUkNIQVIgTk9UIE5VTEwsIGhvc3QgVkFS
Q0hBUiBOT1QgTlVMTCwgcG9ydCBJTlRFR0VSLCBzZXJ2aWNlX3R5cGUgSU5URUdFUiBOT1QgTlVM
TCwgcmVhbG0gVkFSQ0hBUiwgYXV0aF9zY2hlbWUgSU5URUdFUiBOT1QgTlVMTCwgdXNlcm5hbWUg
VkFSQ0hBUiwgcGFzc3dvcmQgQkxPQikgIiksCisgICAgICAgICAgICBmYWxzZSwgIkZhaWxlZCB0
byBjcmVhdGUgdGFibGUgbG9naW5zIGZvciBsb2dpbiBkYXRhYmFzZSIpOworCisgICAgICAgIC8v
IENyZWF0ZSBpbmRleCBmb3IgdGFibGUgbG9naW5zCisgICAgICAgIEhBTkRMRV9TUUxfRVhFQ19G
QUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggbG9naW5zX3Np
Z25vbiBPTiBsb2dpbnMgKGhvc3QpIiksCisgICAgICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBj
cmVhdGUgaW5kZXggZm9yIHRhYmxlIGxvZ2lucyIpOworICAgIH0gZWxzZSB7IC8vIEluaXRpYXRl
IENyZWRlbnRpYWxTdG9yYWdlCisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFi
YXNlLCAiU0VMRUNUIG9yaWdpbl91cmwsIGhvc3QsIHBvcnQsIHNlcnZpY2VfdHlwZSwgcmVhbG0s
IGF1dGhfc2NoZW1lLCB1c2VybmFtZSwgcGFzc3dvcmQgRlJPTSBsb2dpbnMiKTsKKyAgICAgICAg
SEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAor
ICAgICAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBxdWVyeSBzdGF0ZW1lbnQgdG8g
aW5pdGlhdGUgQ3JlZGVudGlhbFN0b3JhZ2UiKTsKKworICAgICAgICBpbnQgcmVzdWx0ID0gcXVl
cnkuc3RlcCgpOworICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdykgeworICAg
ICAgICAgICAgU3RyaW5nIHN0clVybCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMSk7CisgICAgICAg
ICAgICBTdHJpbmcgc3RySG9zdCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMik7CisgICAgICAgICAg
ICBpbnQgaW50UG9ydCA9IHF1ZXJ5LmdldENvbHVtbkludCgzKTsKKyAgICAgICAgICAgIFByb3Rl
Y3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmljZVR5cGUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9u
U3BhY2VTZXJ2ZXJUeXBlPihxdWVyeS5nZXRDb2x1bW5JbnQoNCkpOworICAgICAgICAgICAgU3Ry
aW5nIHN0clJlYWxtID0gcXVlcnkuZ2V0Q29sdW1uVGV4dCg1KTsKKyAgICAgICAgICAgIFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhTY2hlbWUgPSBzdGF0aWNfY2FzdDxQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4ocXVlcnkuZ2V0Q29sdW1uSW50KDYp
KTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJVc2VyTmFtZSA9IHF1ZXJ5LmdldENvbHVtblRleHQo
Nyk7CisgICAgICAgICAgICBTdHJpbmcgc3RyUGFzc3dvcmQgPSBkZWNyeXB0ZWRTdHJpbmcocXVl
cnkuZ2V0Q29sdW1uVGV4dCg4KSk7CisKKyAgICAgICAgICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0
cmluZywgc3RyVXJsKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3Bh
Y2Uoc3RySG9zdCwgaW50UG9ydCwgc2VydmljZVR5cGUsIHN0clJlYWxtLCBhdXRoU2NoZW1lKTsK
KyAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChzdHJVc2VyTmFtZSwgc3RyUGFzc3dv
cmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CisgICAgICAgICAgICBDcmVkZW50
aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSwgdXJsKTsKKworICAg
ICAgICAgICAgcmVzdWx0ID0gcXVlcnkuc3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gUHJlcGFyZSB0aGUgc3RhdGVtZW50cy4KKyAgICBtX2FkZFN0YXRlbWVudCA9IG5ldyBTUUxp
dGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gbG9naW5zIChv
cmlnaW5fdXJsLCBob3N0LCBwb3J0LCBzZXJ2aWNlX3R5cGUsIHJlYWxtLCBhdXRoX3NjaGVtZSwg
dXNlcm5hbWUsIHBhc3N3b3JkKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pIik7Cisg
ICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUobV9hZGRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBhZGRMb2dpbiBz
dGF0ZW1lbnQiKTsKKworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiVVBEQVRFIGxvZ2lucyBTRVQgdXNlcm5hbWUgPSA/LCBwYXNzd29yZCA9
ID8gV0hFUkUgb3JpZ2luX3VybCA9ID8gQU5EIGhvc3QgPSA/IEFORCBwb3J0ID0gPyBBTkQgc2Vy
dmljZV90eXBlID0gPyBBTkQgcmVhbG0gPSA/IEFORCBhdXRoX3NjaGVtZSA9ID8iKTsKKyAgICBI
QU5ETEVfU1FMX0VYRUNfRkFJTFVSRShtX3VwZGF0ZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNR
TFJlc3VsdE9rLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIHVwZGF0ZUxvZ2lu
IHN0YXRlbWVudCIpOworCisgICAgbV9oYXNTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVtZW50
KG1fZGF0YWJhc2UsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBsb2dpbnMgV0hFUkUgaG9zdCA9ID8g
QU5EIHBvcnQgPSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/IEFORCByZWFsbSA9ID8gQU5EIGF1dGhf
c2NoZW1lID0gPyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1faGFzU3RhdGVtZW50
LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHBy
ZXBhcmUgaGFzTG9naW4gc3RhdGVtZW50Iik7CisKKyAgICBtX2dldFN0YXRlbWVudCA9IG5ldyBT
UUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB1c2VybmFtZSwgcGFzc3dvcmQgRlJP
TSBsb2dpbnMgV0hFUkUgaG9zdCA9ID8gQU5EIHBvcnQgPSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/
IEFORCByZWFsbSA9ID8gQU5EIGF1dGhfc2NoZW1lID0gPyIpOworICAgIEhBTkRMRV9TUUxfRVhF
Q19GQUlMVVJFKG1fZ2V0U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAg
ICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUgZ2V0TG9naW4gc3RhdGVtZW50Iik7CisKKyAg
ICBtX3JlbW92ZVN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRF
TEVURSBGUk9NIGxvZ2lucyBXSEVSRSBob3N0ID0gPyBBTkQgcG9ydCA9ID8gQU5EIHNlcnZpY2Vf
dHlwZSA9ID8gQU5EIHJlYWxtID0gPyBBTkQgYXV0aF9zY2hlbWUgPSA/Iik7CisgICAgSEFORExF
X1NRTF9FWEVDX0ZBSUxVUkUobV9yZW1vdmVTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1
bHRPaywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSByZW1vdmVMb2dpbiBzdGF0
ZW1lbnQiKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENyZWRlbnRpYWxCYWNraW5n
U3RvcmU6OmNsb3NlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGRlbGV0ZSBtX2Fk
ZFN0YXRlbWVudDsKKyAgICBtX2FkZFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fdXBkYXRl
U3RhdGVtZW50OworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9oYXNT
dGF0ZW1lbnQ7CisgICAgbV9oYXNTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX2dldFN0YXRl
bWVudDsKKyAgICBtX2dldFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fcmVtb3ZlU3RhdGVt
ZW50OworICAgIG1fcmVtb3ZlU3RhdGVtZW50ID0gMDsKKworICAgIGlmIChtX2RhdGFiYXNlLmlz
T3BlbigpKQorICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlh
bEJhY2tpbmdTdG9yZTo6YWRkTG9naW4oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsK
LSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNl
KTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlhbCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7
CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1f
YWRkU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FkZFN0YXRlbWVu
dC0+YmluZFRleHQoMSwgdXJsLnN0cmluZygpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRl
eHQoMiwgcHJvdGVjdGlvblNwYWNlLmhvc3QoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJ
bnQoMywgcHJvdGVjdGlvblNwYWNlLnBvcnQoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJ
bnQoNCwgc3RhdGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7Cisg
ICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRUZXh0KDUsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsK
KyAgICBtX2FkZFN0YXRlbWVudC0+YmluZEludCg2LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJp
bmRUZXh0KDcsIGNyZWRlbnRpYWwudXNlcigpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZEJs
b2IoOCwgZW5jcnlwdGVkU3RyaW5nKGNyZWRlbnRpYWwucGFzc3dvcmQoKSkpOworCisgICAgaW50
IHJlc3VsdCA9IG1fYWRkU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZB
SUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRv
IGFkZCBsb2dpbiBpbmZvIGludG8gdGFibGUgbG9naW5zIC0gJWkiLCByZXN1bHQpOworCisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6dXBkYXRlTG9n
aW4oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBVTlVTRURfUEFSQU0odXJs
KTsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKLSAgICBVTlVTRURfUEFSQU0o
Y3JlZGVudGlhbCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFTU0VS
VChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdXBkYXRlU3RhdGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwg
dXJsLnN0cmluZygpKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMiwgY3JlZGVu
dGlhbC51c2VyKCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kQmxvYigzLCBlbmNyeXB0
ZWRTdHJpbmcoY3JlZGVudGlhbC5wYXNzd29yZCgpKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQt
PmJpbmRUZXh0KDQsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fdXBkYXRlU3RhdGVt
ZW50LT5iaW5kSW50KDUsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fdXBkYXRlU3Rh
dGVtZW50LT5iaW5kSW50KDYsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZl
clR5cGUoKSkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kVGV4dCg3LCBwcm90ZWN0aW9u
U3BhY2UucmVhbG0oKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRJbnQoOCwgc3RhdGlj
X2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisg
ICAgaW50IHJlc3VsdCA9IG1fdXBkYXRlU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NR
TF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAi
RmFpbGVkIHRvIHVwZGF0ZSBsb2dpbiBpbmZvIGluIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0
KTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6
Omhhc0xvZ2luKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAg
IFVOVVNFRF9QQVJBTShwcm90ZWN0aW9uU3BhY2UpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlz
T3BlbigpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5zIikpOwog
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1faGFzU3RhdGVtZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2hhc1N0YXRlbWVudC0+YmluZFRleHQoMSwgcHJvdGVj
dGlvblNwYWNlLmhvc3QoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgcHJvdGVj
dGlvblNwYWNlLnBvcnQoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMywgc3RhdGlj
X2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7CisgICAgbV9oYXNTdGF0
ZW1lbnQtPmJpbmRUZXh0KDQsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsKKyAgICBtX2hhc1N0
YXRlbWVudC0+YmluZEludCg1LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvblNjaGVtZSgpKSk7CisKKyAgICBpbnQgcmVzdWx0ID0gbV9oYXNTdGF0ZW1lbnQt
PnN0ZXAoKTsKKyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0
Um93LCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBsb2dpbiBpbmZv
IGZyb20gdGFibGUgbG9naW5zIGluIGhhc0xvZ2luIC0gJWkiLCByZXN1bHQpOworCisgICAgaWYg
KG1faGFzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpCisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpnZXRMb2dpbihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5p
c09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsK
IAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwoKTsKKyAgICBp
ZiAoIW1fZ2V0U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworCisgICAg
bV9nZXRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAg
IG1fZ2V0U3RhdGVtZW50LT5iaW5kSW50KDIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAg
IG1fZ2V0U3RhdGVtZW50LT5iaW5kSW50KDMsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNw
YWNlLnNlcnZlclR5cGUoKSkpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBwcm90
ZWN0aW9uU3BhY2UucmVhbG0oKSk7CisgICAgbV9nZXRTdGF0ZW1lbnQtPmJpbmRJbnQoNSwgc3Rh
dGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOwor
CisgICAgaW50IHJlc3VsdCA9IG1fZ2V0U3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NR
TF9FWEVDX0ZBSUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdFJvdywgQ3JlZGVudGlhbCgpLAorICAg
ICAgICAiRmFpbGVkIHRvIGV4ZWN1dGUgc2VsZWN0IGxvZ2luIGluZm8gZnJvbSB0YWJsZSBsb2dp
bnMgaW4gZ2V0TG9naW4gLSAlaSIsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gQ3JlZGVudGlhbCht
X2dldFN0YXRlbWVudC0+Z2V0Q29sdW1uVGV4dCgwKSwgZGVjcnlwdGVkU3RyaW5nKG1fZ2V0U3Rh
dGVtZW50LT5nZXRDb2x1bW5UZXh0KDEpKSwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50
KTsKIH0KIAogYm9vbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpyZW1vdmVMb2dpbihjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJv
dGVjdGlvblNwYWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNT
RVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yZW1vdmVTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kVGV4dCgx
LCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZElu
dCgyLCBwcm90ZWN0aW9uU3BhY2UucG9ydCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+Ymlu
ZEludCgzLCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpKTsK
KyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZFRleHQoNCwgcHJvdGVjdGlvblNwYWNlLnJlYWxt
KCkpOworICAgIG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kSW50KDUsIHN0YXRpY19jYXN0PGludD4o
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpKTsKKworICAgIGludCByZXN1
bHQgPSBtX3JlbW92ZVN0YXRlbWVudC0+c3RlcCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlM
VVJFKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBy
ZW1vdmUgbG9naW4gaW5mbyBmcm9tIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OmNsZWFyKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMo
ImxvZ2lucyIpKTsKKworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJERUxFVEUgKiBGUk9NIGxvZ2lucyIpLAorICAgICAgICBmYWxzZSwgIkZh
aWxlZCB0byBjbGVhciB0YWJsZSBsb2dpbnMiKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBT
dHJpbmcgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6ZW5jcnlwdGVkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcGxhaW5UZXh0KSBjb25zdAo=
</data>
<flag name="review"
          id="125742"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124493</attachid>
            <date>2012-01-29 21:34:10 -0800</date>
            <delta_ts>2012-01-29 21:43:08 -0800</delta_ts>
            <desc>patch for cq after Antonio&apos;s review, also thanks Rob.</desc>
            <filename>credential-cq.patch</filename>
            <type>text/plain</type>
            <size>12779</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">Y29tbWl0IDc3MTMwODJiZDUzNWU1ZWU1NzE3NzI3NzEzYWUyODVhODJhNGRjNjUKQXV0aG9yOiBK
b25hdGhhbiBEb25nIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KRGF0ZTogICBN
b24gSmFuIDMwIDEzOjI5OjE2IDIwMTIgKzA4MDAKCiAgICBbQmxhY2tCZXJyeV0gQ3JlZGVudGlh
bCBiYWNraW5nIHN0b3JlIGltcGxlbWVudGF0aW9uCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NjEKICAgIAogICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KICAgIAogICAgSW1wbGVtZW50ZWQgY3JlZGVudGlhbCBiYWNraW5nIHN0b3JlIGRhdGFiYXNl
IGFuZCByZWxhdGVkCiAgICBvcGVyYXRpb25zIGluIGNsYXNzIENyZWRlbnRpYWxCYWNraW5nU3Rv
cmUuCiAgICAKICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNr
aW5nU3RvcmUuY3BwOgogICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYWNraW5nU3RvcmU6On5DcmVk
ZW50aWFsQmFja2luZ1N0b3JlKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpvcGVuKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CiAg
ICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6YWRkTG9naW4pOgogICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxCYWNraW5nU3RvcmU6OnVwZGF0ZUxvZ2luKToKICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsQmFja2luZ1N0b3JlOjpoYXNMb2dpbik6CiAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bEJhY2tpbmdTdG9yZTo6Z2V0TG9naW4pOgogICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYWNraW5n
U3RvcmU6OnJlbW92ZUxvZ2luKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpjbGVhcik6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVkNDI2MTcuLmE0ZThjMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxMi0wMS0yOSAgSm9uYXRoYW4gRG9uZyAgPGpvbmF0aGFuLmRvbmdA
dG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBDcmVkZW50aWFsIGJh
Y2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KKworICAgICAgICBJbXBsZW1lbnRlZCBjcmVkZW50aWFsIGJhY2tpbmcgc3RvcmUgZGF0
YWJhc2UgYW5kIHJlbGF0ZWQKKyAgICAgICAgb3BlcmF0aW9ucyBpbiBjbGFzcyBDcmVkZW50aWFs
QmFja2luZ1N0b3JlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Ny
ZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJh
Y2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFj
a2luZ1N0b3JlOjphZGRMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2lu
Z1N0b3JlOjp1cGRhdGVMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2lu
Z1N0b3JlOjpoYXNMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0
b3JlOjpnZXRMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpyZW1vdmVMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpjbGVhcik6CisKIDIwMTItMDEtMjkgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwu
Y29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIGRlY29kaW5nIHN3aXp6bGUgb25seSBvbiBs
aWJqcGVnLXR1cmJvIDEuMS45MCsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3Jl
LmNwcAppbmRleCBiYmIyYmZjLi5hY2FjYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCisjZGVmaW5lIEhBTkRMRV9T
UUxfRVhFQ19GQUlMVVJFKHN0YXRlbWVudCwgcmV0dXJuVmFsdWUsIC4uLikgXAorICAgIGlmIChz
dGF0ZW1lbnQpIHsgXAorICAgICAgICBMT0dfRVJST1IoX19WQVJfQVJHU19fKTsgXAorICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7IFwKKyAgICB9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2Uo
KQpAQCAtNDksNjkgKzU1LDIxMiBAQCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpDcmVkZW50aWFs
QmFja2luZ1N0b3JlKCkKIAogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUoKQogeworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2Rh
dGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihj
b25zdCBTdHJpbmcmIGRiUGF0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGJQYXRoKTsKKyAgICBB
U1NFUlQoIW1fZGF0YWJhc2UuaXNPcGVuKCkpOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJhc2Uu
b3BlbihkYlBhdGgpLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGZp
bGUgJXMgZm9yIGxvZ2luIGRhdGFiYXNlIiwgZGJQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSkgeworICAgICAgICBIQU5ETEVf
U1FMX0VYRUNfRkFJTFVSRSghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IGxvZ2lucyAob3JpZ2luX3VybCBWQVJDSEFSIE5PVCBOVUxMLCBob3N0IFZBUkNIQVIgTk9UIE5V
TEwsIHBvcnQgSU5URUdFUiwgc2VydmljZV90eXBlIElOVEVHRVIgTk9UIE5VTEwsIHJlYWxtIFZB
UkNIQVIsIGF1dGhfc2NoZW1lIElOVEVHRVIgTk9UIE5VTEwsIHVzZXJuYW1lIFZBUkNIQVIsIHBh
c3N3b3JkIEJMT0IpICIpLAorICAgICAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gY3JlYXRlIHRh
YmxlIGxvZ2lucyBmb3IgbG9naW4gZGF0YWJhc2UiKTsKKworICAgICAgICAvLyBDcmVhdGUgaW5k
ZXggZm9yIHRhYmxlIGxvZ2lucy4KKyAgICAgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBsb2dpbnNfc2lnbm9uIE9OIGxv
Z2lucyAoaG9zdCkiKSwKKyAgICAgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbmRl
eCBmb3IgdGFibGUgbG9naW5zIik7CisgICAgfSBlbHNlIHsgLy8gSW5pdGlhdGUgQ3JlZGVudGlh
bFN0b3JhZ2UuCisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNlLCAiU0VM
RUNUIG9yaWdpbl91cmwsIGhvc3QsIHBvcnQsIHNlcnZpY2VfdHlwZSwgcmVhbG0sIGF1dGhfc2No
ZW1lLCB1c2VybmFtZSwgcGFzc3dvcmQgRlJPTSBsb2dpbnMiKTsKKyAgICAgICAgSEFORExFX1NR
TF9FWEVDX0ZBSUxVUkUocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAorICAgICAgICAg
ICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBxdWVyeSBzdGF0ZW1lbnQgdG8gaW5pdGlhdGUg
Q3JlZGVudGlhbFN0b3JhZ2UiKTsKKworICAgICAgICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgp
OworICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdykgeworICAgICAgICAgICAg
U3RyaW5nIHN0clVybCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMSk7CisgICAgICAgICAgICBTdHJp
bmcgc3RySG9zdCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMik7CisgICAgICAgICAgICBpbnQgaW50
UG9ydCA9IHF1ZXJ5LmdldENvbHVtbkludCgzKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgc2VydmljZVR5cGUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJUeXBlPihxdWVyeS5nZXRDb2x1bW5JbnQoNCkpOworICAgICAgICAgICAgU3RyaW5nIHN0clJl
YWxtID0gcXVlcnkuZ2V0Q29sdW1uVGV4dCg1KTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhTY2hlbWUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4ocXVlcnkuZ2V0Q29sdW1uSW50KDYpKTsKKyAgICAg
ICAgICAgIFN0cmluZyBzdHJVc2VyTmFtZSA9IHF1ZXJ5LmdldENvbHVtblRleHQoNyk7CisgICAg
ICAgICAgICBTdHJpbmcgc3RyUGFzc3dvcmQgPSBkZWNyeXB0ZWRTdHJpbmcocXVlcnkuZ2V0Q29s
dW1uVGV4dCg4KSk7CisKKyAgICAgICAgICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgc3Ry
VXJsKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2Uoc3RySG9z
dCwgaW50UG9ydCwgc2VydmljZVR5cGUsIHN0clJlYWxtLCBhdXRoU2NoZW1lKTsKKyAgICAgICAg
ICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChzdHJVc2VyTmFtZSwgc3RyUGFzc3dvcmQsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CisgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFn
ZTo6c2V0KGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSwgdXJsKTsKKworICAgICAgICAgICAg
cmVzdWx0ID0gcXVlcnkuc3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJlcGFy
ZSB0aGUgc3RhdGVtZW50cy4KKyAgICBtX2FkZFN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gbG9naW5zIChvcmlnaW5fdXJs
LCBob3N0LCBwb3J0LCBzZXJ2aWNlX3R5cGUsIHJlYWxtLCBhdXRoX3NjaGVtZSwgdXNlcm5hbWUs
IHBhc3N3b3JkKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pIik7CisgICAgSEFORExF
X1NRTF9FWEVDX0ZBSUxVUkUobV9hZGRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRP
aywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBhZGRMb2dpbiBzdGF0ZW1lbnQi
KTsKKworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFi
YXNlLCAiVVBEQVRFIGxvZ2lucyBTRVQgdXNlcm5hbWUgPSA/LCBwYXNzd29yZCA9ID8gV0hFUkUg
b3JpZ2luX3VybCA9ID8gQU5EIGhvc3QgPSA/IEFORCBwb3J0ID0gPyBBTkQgc2VydmljZV90eXBl
ID0gPyBBTkQgcmVhbG0gPSA/IEFORCBhdXRoX3NjaGVtZSA9ID8iKTsKKyAgICBIQU5ETEVfU1FM
X0VYRUNfRkFJTFVSRShtX3VwZGF0ZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9r
LAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIHVwZGF0ZUxvZ2luIHN0YXRlbWVu
dCIpOworCisgICAgbV9oYXNTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBsb2dpbnMgV0hFUkUgaG9zdCA9ID8gQU5EIHBvcnQg
PSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/IEFORCByZWFsbSA9ID8gQU5EIGF1dGhfc2NoZW1lID0g
PyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1faGFzU3RhdGVtZW50LT5wcmVwYXJl
KCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUgaGFz
TG9naW4gc3RhdGVtZW50Iik7CisKKyAgICBtX2dldFN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB1c2VybmFtZSwgcGFzc3dvcmQgRlJPTSBsb2dpbnMg
V0hFUkUgaG9zdCA9ID8gQU5EIHBvcnQgPSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/IEFORCByZWFs
bSA9ID8gQU5EIGF1dGhfc2NoZW1lID0gPyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJF
KG1fZ2V0U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNl
LCAiRmFpbGVkIHRvIHByZXBhcmUgZ2V0TG9naW4gc3RhdGVtZW50Iik7CisKKyAgICBtX3JlbW92
ZVN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9N
IGxvZ2lucyBXSEVSRSBob3N0ID0gPyBBTkQgcG9ydCA9ID8gQU5EIHNlcnZpY2VfdHlwZSA9ID8g
QU5EIHJlYWxtID0gPyBBTkQgYXV0aF9zY2hlbWUgPSA/Iik7CisgICAgSEFORExFX1NRTF9FWEVD
X0ZBSUxVUkUobV9yZW1vdmVTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywKKyAg
ICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSByZW1vdmVMb2dpbiBzdGF0ZW1lbnQiKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OmNs
b3NlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGRlbGV0ZSBtX2FkZFN0YXRlbWVu
dDsKKyAgICBtX2FkZFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fdXBkYXRlU3RhdGVtZW50
OworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9oYXNTdGF0ZW1lbnQ7
CisgICAgbV9oYXNTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX2dldFN0YXRlbWVudDsKKyAg
ICBtX2dldFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fcmVtb3ZlU3RhdGVtZW50OworICAg
IG1fcmVtb3ZlU3RhdGVtZW50ID0gMDsKKworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQor
ICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZTo6YWRkTG9naW4oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0odXJsKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKLSAgICBV
TlVTRURfUEFSQU0oY3JlZGVudGlhbCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYWRkU3RhdGVt
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRl
eHQoMSwgdXJsLnN0cmluZygpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRleHQoMiwgcHJv
dGVjdGlvblNwYWNlLmhvc3QoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJbnQoMywgcHJv
dGVjdGlvblNwYWNlLnBvcnQoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJbnQoNCwgc3Rh
dGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7CisgICAgbV9hZGRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDUsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsKKyAgICBtX2Fk
ZFN0YXRlbWVudC0+YmluZEludCg2LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvblNjaGVtZSgpKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcs
IGNyZWRlbnRpYWwudXNlcigpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZEJsb2IoOCwgZW5j
cnlwdGVkU3RyaW5nKGNyZWRlbnRpYWwucGFzc3dvcmQoKSkpOworCisgICAgaW50IHJlc3VsdCA9
IG1fYWRkU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVz
dWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIGFkZCBsb2dp
biBpbmZvIGludG8gdGFibGUgbG9naW5zIC0gJWkiLCByZXN1bHQpOworCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6dXBkYXRlTG9naW4oY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBV
TlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlh
bCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdXBkYXRlU3RhdGVtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwgdXJsLnN0cmlu
ZygpKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMiwgY3JlZGVudGlhbC51c2Vy
KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kQmxvYigzLCBlbmNyeXB0ZWRTdHJpbmco
Y3JlZGVudGlhbC5wYXNzd29yZCgpKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0
KDQsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5k
SW50KDUsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5i
aW5kSW50KDYsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSkp
OworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kVGV4dCg3LCBwcm90ZWN0aW9uU3BhY2UucmVh
bG0oKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRJbnQoOCwgc3RhdGljX2Nhc3Q8aW50
Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50IHJl
c3VsdCA9IG1fdXBkYXRlU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZB
SUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRv
IHVwZGF0ZSBsb2dpbiBpbmZvIGluIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omhhc0xvZ2lu
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIFVOVVNFRF9Q
QVJBTShwcm90ZWN0aW9uU3BhY2UpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5zIikpOwogCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1faGFzU3RhdGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX2hhc1N0YXRlbWVudC0+YmluZFRleHQoMSwgcHJvdGVjdGlvblNwYWNl
Lmhvc3QoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgcHJvdGVjdGlvblNwYWNl
LnBvcnQoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMywgc3RhdGljX2Nhc3Q8aW50
Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJp
bmRUZXh0KDQsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsKKyAgICBtX2hhc1N0YXRlbWVudC0+
YmluZEludCg1LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpKSk7CisKKyAgICBpbnQgcmVzdWx0ID0gbV9oYXNTdGF0ZW1lbnQtPnN0ZXAoKTsK
KyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0Um93LCBmYWxz
ZSwKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBsb2dpbiBpbmZvIGZyb20gdGFi
bGUgbG9naW5zIGluIGhhc0xvZ2luIC0gJWkiLCByZXN1bHQpOworCisgICAgaWYgKG1faGFzU3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpnZXRMb2dp
bihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7
CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwoKTsKKyAgICBpZiAoIW1fZ2V0
U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworCisgICAgbV9nZXRTdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fZ2V0U3Rh
dGVtZW50LT5iaW5kSW50KDIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fZ2V0U3Rh
dGVtZW50LT5iaW5kSW50KDMsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZl
clR5cGUoKSkpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBwcm90ZWN0aW9uU3Bh
Y2UucmVhbG0oKSk7CisgICAgbV9nZXRTdGF0ZW1lbnQtPmJpbmRJbnQoNSwgc3RhdGljX2Nhc3Q8
aW50Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50
IHJlc3VsdCA9IG1fZ2V0U3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZB
SUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdFJvdywgQ3JlZGVudGlhbCgpLAorICAgICAgICAiRmFp
bGVkIHRvIGV4ZWN1dGUgc2VsZWN0IGxvZ2luIGluZm8gZnJvbSB0YWJsZSBsb2dpbnMgaW4gZ2V0
TG9naW4gLSAlaSIsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gQ3JlZGVudGlhbChtX2dldFN0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCgwKSwgZGVjcnlwdGVkU3RyaW5nKG1fZ2V0U3RhdGVtZW50LT5n
ZXRDb2x1bW5UZXh0KDEpKSwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KTsKIH0KIAog
Ym9vbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpyZW1vdmVMb2dpbihjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNw
YWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yZW1vdmVTdGF0ZW1lbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBwcm90ZWN0
aW9uU3BhY2UuaG9zdCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZEludCgyLCBwcm90
ZWN0aW9uU3BhY2UucG9ydCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZEludCgzLCBz
dGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpKTsKKyAgICBtX3Jl
bW92ZVN0YXRlbWVudC0+YmluZFRleHQoNCwgcHJvdGVjdGlvblNwYWNlLnJlYWxtKCkpOworICAg
IG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kSW50KDUsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpKTsKKworICAgIGludCByZXN1bHQgPSBtX3Jl
bW92ZVN0YXRlbWVudC0+c3RlcCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byByZW1vdmUgbG9n
aW4gaW5mbyBmcm9tIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKworICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OmNsZWFyKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9kYXRhYmFz
ZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIp
KTsKKworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKCJERUxFVEUgKiBGUk9NIGxvZ2lucyIpLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBj
bGVhciB0YWJsZSBsb2dpbnMiKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZTo6ZW5jcnlwdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgcGxhaW5U
ZXh0KSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="125752"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124494</attachid>
            <date>2012-01-29 21:43:08 -0800</date>
            <delta_ts>2012-01-30 04:50:13 -0800</delta_ts>
            <desc>patch for cq</desc>
            <filename>credential-cq.patch</filename>
            <type>text/plain</type>
            <size>12779</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">Y29tbWl0IDc3MTMwODJiZDUzNWU1ZWU1NzE3NzI3NzEzYWUyODVhODJhNGRjNjUKQXV0aG9yOiBK
b25hdGhhbiBEb25nIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KRGF0ZTogICBN
b24gSmFuIDMwIDEzOjI5OjE2IDIwMTIgKzA4MDAKCiAgICBbQmxhY2tCZXJyeV0gQ3JlZGVudGlh
bCBiYWNraW5nIHN0b3JlIGltcGxlbWVudGF0aW9uCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NjEKICAgIAogICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KICAgIAogICAgSW1wbGVtZW50ZWQgY3JlZGVudGlhbCBiYWNraW5nIHN0b3JlIGRhdGFiYXNl
IGFuZCByZWxhdGVkCiAgICBvcGVyYXRpb25zIGluIGNsYXNzIENyZWRlbnRpYWxCYWNraW5nU3Rv
cmUuCiAgICAKICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNr
aW5nU3RvcmUuY3BwOgogICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYWNraW5nU3RvcmU6On5DcmVk
ZW50aWFsQmFja2luZ1N0b3JlKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpvcGVuKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CiAg
ICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6YWRkTG9naW4pOgogICAgKFdlYkNv
cmU6OkNyZWRlbnRpYWxCYWNraW5nU3RvcmU6OnVwZGF0ZUxvZ2luKToKICAgIChXZWJDb3JlOjpD
cmVkZW50aWFsQmFja2luZ1N0b3JlOjpoYXNMb2dpbik6CiAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bEJhY2tpbmdTdG9yZTo6Z2V0TG9naW4pOgogICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxCYWNraW5n
U3RvcmU6OnJlbW92ZUxvZ2luKToKICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpjbGVhcik6CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVkNDI2MTcuLmE0ZThjMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxMi0wMS0yOSAgSm9uYXRoYW4gRG9uZyAgPGpvbmF0aGFuLmRvbmdA
dG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBDcmVkZW50aWFsIGJh
Y2tpbmcgc3RvcmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KKworICAgICAgICBJbXBsZW1lbnRlZCBjcmVkZW50aWFsIGJhY2tpbmcgc3RvcmUgZGF0
YWJhc2UgYW5kIHJlbGF0ZWQKKyAgICAgICAgb3BlcmF0aW9ucyBpbiBjbGFzcyBDcmVkZW50aWFs
QmFja2luZ1N0b3JlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Ny
ZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJh
Y2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFj
a2luZ1N0b3JlOjphZGRMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2lu
Z1N0b3JlOjp1cGRhdGVMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2lu
Z1N0b3JlOjpoYXNMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0
b3JlOjpnZXRMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpyZW1vdmVMb2dpbik6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsQmFja2luZ1N0b3Jl
OjpjbGVhcik6CisKIDIwMTItMDEtMjkgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwu
Y29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIGRlY29kaW5nIHN3aXp6bGUgb25seSBvbiBs
aWJqcGVnLXR1cmJvIDEuMS45MCsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3Jl
LmNwcAppbmRleCBiYmIyYmZjLi5hY2FjYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCisjZGVmaW5lIEhBTkRMRV9T
UUxfRVhFQ19GQUlMVVJFKHN0YXRlbWVudCwgcmV0dXJuVmFsdWUsIC4uLikgXAorICAgIGlmIChz
dGF0ZW1lbnQpIHsgXAorICAgICAgICBMT0dfRVJST1IoX19WQVJfQVJHU19fKTsgXAorICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7IFwKKyAgICB9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q3JlZGVudGlhbEJhY2tpbmdTdG9yZSogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2Uo
KQpAQCAtNDksNjkgKzU1LDIxMiBAQCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpDcmVkZW50aWFs
QmFja2luZ1N0b3JlKCkKIAogQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6fkNyZWRlbnRpYWxCYWNr
aW5nU3RvcmUoKQogeworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICBtX2Rh
dGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6b3Blbihj
b25zdCBTdHJpbmcmIGRiUGF0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGJQYXRoKTsKKyAgICBB
U1NFUlQoIW1fZGF0YWJhc2UuaXNPcGVuKCkpOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1fZGF0YWJhc2Uu
b3BlbihkYlBhdGgpLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGZp
bGUgJXMgZm9yIGxvZ2luIGRhdGFiYXNlIiwgZGJQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSkgeworICAgICAgICBIQU5ETEVf
U1FMX0VYRUNfRkFJTFVSRSghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IGxvZ2lucyAob3JpZ2luX3VybCBWQVJDSEFSIE5PVCBOVUxMLCBob3N0IFZBUkNIQVIgTk9UIE5V
TEwsIHBvcnQgSU5URUdFUiwgc2VydmljZV90eXBlIElOVEVHRVIgTk9UIE5VTEwsIHJlYWxtIFZB
UkNIQVIsIGF1dGhfc2NoZW1lIElOVEVHRVIgTk9UIE5VTEwsIHVzZXJuYW1lIFZBUkNIQVIsIHBh
c3N3b3JkIEJMT0IpICIpLAorICAgICAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gY3JlYXRlIHRh
YmxlIGxvZ2lucyBmb3IgbG9naW4gZGF0YWJhc2UiKTsKKworICAgICAgICAvLyBDcmVhdGUgaW5k
ZXggZm9yIHRhYmxlIGxvZ2lucy4KKyAgICAgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUoIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBsb2dpbnNfc2lnbm9uIE9OIGxv
Z2lucyAoaG9zdCkiKSwKKyAgICAgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbmRl
eCBmb3IgdGFibGUgbG9naW5zIik7CisgICAgfSBlbHNlIHsgLy8gSW5pdGlhdGUgQ3JlZGVudGlh
bFN0b3JhZ2UuCisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNlLCAiU0VM
RUNUIG9yaWdpbl91cmwsIGhvc3QsIHBvcnQsIHNlcnZpY2VfdHlwZSwgcmVhbG0sIGF1dGhfc2No
ZW1lLCB1c2VybmFtZSwgcGFzc3dvcmQgRlJPTSBsb2dpbnMiKTsKKyAgICAgICAgSEFORExFX1NR
TF9FWEVDX0ZBSUxVUkUocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rLAorICAgICAgICAg
ICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBxdWVyeSBzdGF0ZW1lbnQgdG8gaW5pdGlhdGUg
Q3JlZGVudGlhbFN0b3JhZ2UiKTsKKworICAgICAgICBpbnQgcmVzdWx0ID0gcXVlcnkuc3RlcCgp
OworICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdykgeworICAgICAgICAgICAg
U3RyaW5nIHN0clVybCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMSk7CisgICAgICAgICAgICBTdHJp
bmcgc3RySG9zdCA9IHF1ZXJ5LmdldENvbHVtblRleHQoMik7CisgICAgICAgICAgICBpbnQgaW50
UG9ydCA9IHF1ZXJ5LmdldENvbHVtbkludCgzKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZVNlcnZlclR5cGUgc2VydmljZVR5cGUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJUeXBlPihxdWVyeS5nZXRDb2x1bW5JbnQoNCkpOworICAgICAgICAgICAgU3RyaW5nIHN0clJl
YWxtID0gcXVlcnkuZ2V0Q29sdW1uVGV4dCg1KTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhTY2hlbWUgPSBzdGF0aWNfY2FzdDxQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZT4ocXVlcnkuZ2V0Q29sdW1uSW50KDYpKTsKKyAgICAg
ICAgICAgIFN0cmluZyBzdHJVc2VyTmFtZSA9IHF1ZXJ5LmdldENvbHVtblRleHQoNyk7CisgICAg
ICAgICAgICBTdHJpbmcgc3RyUGFzc3dvcmQgPSBkZWNyeXB0ZWRTdHJpbmcocXVlcnkuZ2V0Q29s
dW1uVGV4dCg4KSk7CisKKyAgICAgICAgICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgc3Ry
VXJsKTsKKyAgICAgICAgICAgIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2Uoc3RySG9z
dCwgaW50UG9ydCwgc2VydmljZVR5cGUsIHN0clJlYWxtLCBhdXRoU2NoZW1lKTsKKyAgICAgICAg
ICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbChzdHJVc2VyTmFtZSwgc3RyUGFzc3dvcmQsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CisgICAgICAgICAgICBDcmVkZW50aWFsU3RvcmFn
ZTo6c2V0KGNyZWRlbnRpYWwsIHByb3RlY3Rpb25TcGFjZSwgdXJsKTsKKworICAgICAgICAgICAg
cmVzdWx0ID0gcXVlcnkuc3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJlcGFy
ZSB0aGUgc3RhdGVtZW50cy4KKyAgICBtX2FkZFN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gbG9naW5zIChvcmlnaW5fdXJs
LCBob3N0LCBwb3J0LCBzZXJ2aWNlX3R5cGUsIHJlYWxtLCBhdXRoX3NjaGVtZSwgdXNlcm5hbWUs
IHBhc3N3b3JkKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pIik7CisgICAgSEFORExF
X1NRTF9FWEVDX0ZBSUxVUkUobV9hZGRTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRP
aywKKyAgICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSBhZGRMb2dpbiBzdGF0ZW1lbnQi
KTsKKworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gbmV3IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFi
YXNlLCAiVVBEQVRFIGxvZ2lucyBTRVQgdXNlcm5hbWUgPSA/LCBwYXNzd29yZCA9ID8gV0hFUkUg
b3JpZ2luX3VybCA9ID8gQU5EIGhvc3QgPSA/IEFORCBwb3J0ID0gPyBBTkQgc2VydmljZV90eXBl
ID0gPyBBTkQgcmVhbG0gPSA/IEFORCBhdXRoX3NjaGVtZSA9ID8iKTsKKyAgICBIQU5ETEVfU1FM
X0VYRUNfRkFJTFVSRShtX3VwZGF0ZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9r
LAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBwcmVwYXJlIHVwZGF0ZUxvZ2luIHN0YXRlbWVu
dCIpOworCisgICAgbV9oYXNTdGF0ZW1lbnQgPSBuZXcgU1FMaXRlU3RhdGVtZW50KG1fZGF0YWJh
c2UsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBsb2dpbnMgV0hFUkUgaG9zdCA9ID8gQU5EIHBvcnQg
PSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/IEFORCByZWFsbSA9ID8gQU5EIGF1dGhfc2NoZW1lID0g
PyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKG1faGFzU3RhdGVtZW50LT5wcmVwYXJl
KCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNlLCAiRmFpbGVkIHRvIHByZXBhcmUgaGFz
TG9naW4gc3RhdGVtZW50Iik7CisKKyAgICBtX2dldFN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCB1c2VybmFtZSwgcGFzc3dvcmQgRlJPTSBsb2dpbnMg
V0hFUkUgaG9zdCA9ID8gQU5EIHBvcnQgPSA/IEFORCBzZXJ2aWNlX3R5cGUgPSA/IEFORCByZWFs
bSA9ID8gQU5EIGF1dGhfc2NoZW1lID0gPyIpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJF
KG1fZ2V0U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2ssCisgICAgICAgIGZhbHNl
LCAiRmFpbGVkIHRvIHByZXBhcmUgZ2V0TG9naW4gc3RhdGVtZW50Iik7CisKKyAgICBtX3JlbW92
ZVN0YXRlbWVudCA9IG5ldyBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9N
IGxvZ2lucyBXSEVSRSBob3N0ID0gPyBBTkQgcG9ydCA9ID8gQU5EIHNlcnZpY2VfdHlwZSA9ID8g
QU5EIHJlYWxtID0gPyBBTkQgYXV0aF9zY2hlbWUgPSA/Iik7CisgICAgSEFORExFX1NRTF9FWEVD
X0ZBSUxVUkUobV9yZW1vdmVTdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaywKKyAg
ICAgICAgZmFsc2UsICJGYWlsZWQgdG8gcHJlcGFyZSByZW1vdmVMb2dpbiBzdGF0ZW1lbnQiKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OmNs
b3NlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGRlbGV0ZSBtX2FkZFN0YXRlbWVu
dDsKKyAgICBtX2FkZFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fdXBkYXRlU3RhdGVtZW50
OworICAgIG1fdXBkYXRlU3RhdGVtZW50ID0gMDsKKyAgICBkZWxldGUgbV9oYXNTdGF0ZW1lbnQ7
CisgICAgbV9oYXNTdGF0ZW1lbnQgPSAwOworICAgIGRlbGV0ZSBtX2dldFN0YXRlbWVudDsKKyAg
ICBtX2dldFN0YXRlbWVudCA9IDA7CisgICAgZGVsZXRlIG1fcmVtb3ZlU3RhdGVtZW50OworICAg
IG1fcmVtb3ZlU3RhdGVtZW50ID0gMDsKKworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQor
ICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdT
dG9yZTo6YWRkTG9naW4oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0odXJsKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKLSAgICBV
TlVTRURfUEFSQU0oY3JlZGVudGlhbCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYWRkU3RhdGVt
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRl
eHQoMSwgdXJsLnN0cmluZygpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZFRleHQoMiwgcHJv
dGVjdGlvblNwYWNlLmhvc3QoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJbnQoMywgcHJv
dGVjdGlvblNwYWNlLnBvcnQoKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRJbnQoNCwgc3Rh
dGljX2Nhc3Q8aW50Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7CisgICAgbV9hZGRT
dGF0ZW1lbnQtPmJpbmRUZXh0KDUsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsKKyAgICBtX2Fk
ZFN0YXRlbWVudC0+YmluZEludCg2LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvblNjaGVtZSgpKSk7CisgICAgbV9hZGRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcs
IGNyZWRlbnRpYWwudXNlcigpKTsKKyAgICBtX2FkZFN0YXRlbWVudC0+YmluZEJsb2IoOCwgZW5j
cnlwdGVkU3RyaW5nKGNyZWRlbnRpYWwucGFzc3dvcmQoKSkpOworCisgICAgaW50IHJlc3VsdCA9
IG1fYWRkU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZBSUxVUkUocmVz
dWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRvIGFkZCBsb2dp
biBpbmZvIGludG8gdGFibGUgbG9naW5zIC0gJWkiLCByZXN1bHQpOworCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6dXBkYXRlTG9naW4oY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBV
TlVTRURfUEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKLSAgICBVTlVTRURfUEFSQU0oY3JlZGVudGlh
bCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlLnRhYmxlRXhpc3RzKCJsb2dpbnMiKSk7CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdXBkYXRlU3RhdGVtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMSwgdXJsLnN0cmlu
ZygpKTsKKyAgICBtX3VwZGF0ZVN0YXRlbWVudC0+YmluZFRleHQoMiwgY3JlZGVudGlhbC51c2Vy
KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kQmxvYigzLCBlbmNyeXB0ZWRTdHJpbmco
Y3JlZGVudGlhbC5wYXNzd29yZCgpKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRUZXh0
KDQsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5k
SW50KDUsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5i
aW5kSW50KDYsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZlclR5cGUoKSkp
OworICAgIG1fdXBkYXRlU3RhdGVtZW50LT5iaW5kVGV4dCg3LCBwcm90ZWN0aW9uU3BhY2UucmVh
bG0oKSk7CisgICAgbV91cGRhdGVTdGF0ZW1lbnQtPmJpbmRJbnQoOCwgc3RhdGljX2Nhc3Q8aW50
Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50IHJl
c3VsdCA9IG1fdXBkYXRlU3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZB
SUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUsIGZhbHNlLAorICAgICAgICAiRmFpbGVkIHRv
IHVwZGF0ZSBsb2dpbiBpbmZvIGluIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omhhc0xvZ2lu
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIFVOVVNFRF9Q
QVJBTShwcm90ZWN0aW9uU3BhY2UpOworICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZS50YWJsZUV4aXN0cygibG9naW5zIikpOwogCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1faGFzU3RhdGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX2hhc1N0YXRlbWVudC0+YmluZFRleHQoMSwgcHJvdGVjdGlvblNwYWNl
Lmhvc3QoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMiwgcHJvdGVjdGlvblNwYWNl
LnBvcnQoKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJpbmRJbnQoMywgc3RhdGljX2Nhc3Q8aW50
Pihwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpKSk7CisgICAgbV9oYXNTdGF0ZW1lbnQtPmJp
bmRUZXh0KDQsIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpKTsKKyAgICBtX2hhc1N0YXRlbWVudC0+
YmluZEludCg1LCBzdGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpKSk7CisKKyAgICBpbnQgcmVzdWx0ID0gbV9oYXNTdGF0ZW1lbnQtPnN0ZXAoKTsK
KyAgICBIQU5ETEVfU1FMX0VYRUNfRkFJTFVSRShyZXN1bHQgIT0gU1FMUmVzdWx0Um93LCBmYWxz
ZSwKKyAgICAgICAgIkZhaWxlZCB0byBleGVjdXRlIHNlbGVjdCBsb2dpbiBpbmZvIGZyb20gdGFi
bGUgbG9naW5zIGluIGhhc0xvZ2luIC0gJWkiLCByZXN1bHQpOworCisgICAgaWYgKG1faGFzU3Rh
dGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogQ3JlZGVudGlhbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpnZXRMb2dp
bihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocHJvdGVjdGlvblNwYWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7
CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwoKTsKKyAgICBpZiAoIW1fZ2V0
U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworCisgICAgbV9nZXRTdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkpOworICAgIG1fZ2V0U3Rh
dGVtZW50LT5iaW5kSW50KDIsIHByb3RlY3Rpb25TcGFjZS5wb3J0KCkpOworICAgIG1fZ2V0U3Rh
dGVtZW50LT5iaW5kSW50KDMsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlvblNwYWNlLnNlcnZl
clR5cGUoKSkpOworICAgIG1fZ2V0U3RhdGVtZW50LT5iaW5kVGV4dCg0LCBwcm90ZWN0aW9uU3Bh
Y2UucmVhbG0oKSk7CisgICAgbV9nZXRTdGF0ZW1lbnQtPmJpbmRJbnQoNSwgc3RhdGljX2Nhc3Q8
aW50Pihwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSkpOworCisgICAgaW50
IHJlc3VsdCA9IG1fZ2V0U3RhdGVtZW50LT5zdGVwKCk7CisgICAgSEFORExFX1NRTF9FWEVDX0ZB
SUxVUkUocmVzdWx0ICE9IFNRTFJlc3VsdFJvdywgQ3JlZGVudGlhbCgpLAorICAgICAgICAiRmFp
bGVkIHRvIGV4ZWN1dGUgc2VsZWN0IGxvZ2luIGluZm8gZnJvbSB0YWJsZSBsb2dpbnMgaW4gZ2V0
TG9naW4gLSAlaSIsIHJlc3VsdCk7CisKKyAgICByZXR1cm4gQ3JlZGVudGlhbChtX2dldFN0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCgwKSwgZGVjcnlwdGVkU3RyaW5nKG1fZ2V0U3RhdGVtZW50LT5n
ZXRDb2x1bW5UZXh0KDEpKSwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlUGVybWFuZW50KTsKIH0KIAog
Ym9vbCBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjpyZW1vdmVMb2dpbihjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvdGVjdGlvblNw
YWNlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0
YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIpKTsKIAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yZW1vdmVTdGF0ZW1lbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBwcm90ZWN0
aW9uU3BhY2UuaG9zdCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZEludCgyLCBwcm90
ZWN0aW9uU3BhY2UucG9ydCgpKTsKKyAgICBtX3JlbW92ZVN0YXRlbWVudC0+YmluZEludCgzLCBz
dGF0aWNfY2FzdDxpbnQ+KHByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUeXBlKCkpKTsKKyAgICBtX3Jl
bW92ZVN0YXRlbWVudC0+YmluZFRleHQoNCwgcHJvdGVjdGlvblNwYWNlLnJlYWxtKCkpOworICAg
IG1fcmVtb3ZlU3RhdGVtZW50LT5iaW5kSW50KDUsIHN0YXRpY19jYXN0PGludD4ocHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpKTsKKworICAgIGludCByZXN1bHQgPSBtX3Jl
bW92ZVN0YXRlbWVudC0+c3RlcCgpOworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lLCBmYWxzZSwKKyAgICAgICAgIkZhaWxlZCB0byByZW1vdmUgbG9n
aW4gaW5mbyBmcm9tIHRhYmxlIGxvZ2lucyAtICVpIiwgcmVzdWx0KTsKKworICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIENyZWRlbnRpYWxCYWNraW5nU3RvcmU6OmNsZWFyKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9kYXRhYmFz
ZS5pc09wZW4oKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2UudGFibGVFeGlzdHMoImxvZ2lucyIp
KTsKKworICAgIEhBTkRMRV9TUUxfRVhFQ19GQUlMVVJFKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKCJERUxFVEUgKiBGUk9NIGxvZ2lucyIpLAorICAgICAgICBmYWxzZSwgIkZhaWxlZCB0byBj
bGVhciB0YWJsZSBsb2dpbnMiKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZTo6ZW5jcnlwdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgcGxhaW5U
ZXh0KSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>