<?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>107312</bug_id>
          
          <creation_ts>2013-01-18 12:30:34 -0800</creation_ts>
          <short_desc>Weak GC maps should be easier to use</short_desc>
          <delta_ts>2013-01-30 12:11:09 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>jer.noble</cc>
    
    <cc>naginenis</cc>
    
    <cc>ossy</cc>
    
    <cc>ostap73</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>810930</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-18 12:30:34 -0800</bug_when>
    <thetext>Weak GC maps should be easier to use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810935</commentid>
    <comment_count>1</comment_count>
      <attachid>183530</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-18 12:38:28 -0800</bug_when>
    <thetext>Created attachment 183530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810936</commentid>
    <comment_count>2</comment_count>
      <attachid>183530</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-18 12:38:46 -0800</bug_when>
    <thetext>Comment on attachment 183530
Patch

Sam Weinig reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810937</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-18 12:39:30 -0800</bug_when>
    <thetext>Committed r140194: &lt;http://trac.webkit.org/changeset/140194&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810979</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-01-18 13:30:52 -0800</bug_when>
    <thetext>Build fixes:

Committed r140199: &lt;http://trac.webkit.org/changeset/140199&gt;
Committed r140200: &lt;http://trac.webkit.org/changeset/140200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810988</commentid>
    <comment_count>5</comment_count>
      <attachid>183537</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 13:40:35 -0800</bug_when>
    <thetext>Created attachment 183537
For some reason &quot;using&quot; doesn&apos;t  work on linuxes. Replace it with &quot;typedef&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810990</commentid>
    <comment_count>6</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 13:41:36 -0800</bug_when>
    <thetext>Reopened because of build break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811049</commentid>
    <comment_count>7</comment_count>
      <attachid>183537</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-18 14:33:03 -0800</bug_when>
    <thetext>Comment on attachment 183537
For some reason &quot;using&quot; doesn&apos;t  work on linuxes. Replace it with &quot;typedef&quot;.

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811083</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-18 15:07:05 -0800</bug_when>
    <thetext>Committed r140211: &lt;http://trac.webkit.org/changeset/140211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811103</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-01-18 15:34:29 -0800</bug_when>
    <thetext>You could have avoided 2.5 hours and 20 commit long build breakage ,
if you waited more than 18 seconds for the EWS bots ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811700</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-20 16:57:56 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811701</commentid>
    <comment_count>11</comment_count>
      <attachid>183692</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-20 16:57:59 -0800</bug_when>
    <thetext>Created attachment 183692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811702</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-20 17:01:04 -0800</bug_when>
    <thetext>Committed r140284: &lt;http://trac.webkit.org/changeset/140284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812241</commentid>
    <comment_count>13</comment_count>
      <attachid>183692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-21 10:11:01 -0800</bug_when>
    <thetext>Comment on attachment 183692
Patch

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

&gt; Source/JavaScriptCore/runtime/WeakGCMap.h:73
&gt;      AddResult add(const KeyType&amp; key, MappedPassInType value)
&gt;      {
&gt;          gcMapIfNeeded();
&gt; -        AddResult addResult = Base::add(key, value);
&gt; -        if (!addResult.isNewEntry &amp;&amp; !addResult.iterator-&gt;value) { // Found a zombie value.
&gt; +        AddResult addResult = Base::add(key, nullptr);
&gt; +        if (!addResult.iterator-&gt;value) { // New value or found a zombie value.
&gt;              addResult.isNewEntry = true;
&gt;              addResult.iterator-&gt;value = value;
&gt;          }

To me this function looks like HashMap::set. Three questions:

1) Why is it right to name the operation add rather than set?
2) Why doesn’t this call Base::set rather than Base::add?
3) Does HashMap::set have the same bug that you fixed here? If not, why not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820397</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-30 12:11:09 -0800</bug_when>
    <thetext>&gt; 3) Does HashMap::set have the same bug that you fixed here? If not, why not?

I wouldn&apos;t call this a bug in HashMap -- it&apos;s just a unique feature of weak values.

The key new feature in WeakGCMap, which isn&apos;t appropriate for HashSet, is that values can magically become null, and a null value is treated &quot;as if&quot; there were no such entry in the table.

Perhaps HashMap could be extended to support this feature naturally through an additional value trait. Then we could remove WeakGCMap entirely. I&apos;m not sure if that would be appropriate or not.

&gt; 1) Why is it right to name the operation add rather than set?

If there is a non-null value in the table, this function will not overwrite the value.

&gt; 2) Why doesn’t this call Base::set rather than Base::add?

Same reason.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183530</attachid>
            <date>2013-01-18 12:38:28 -0800</date>
            <delta_ts>2013-01-20 16:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107312-20130118123527.patch</filename>
            <type>text/plain</type>
            <size>20598</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMTkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDEzLTAxLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgV2Vha0dD
TWFwIHRvIG5vdCB1c2UgYSBXZWFrSW1wbCBmaW5hbGl6ZXIgdG8gcmVtb3ZlCisgICAgICAgIGl0
ZW1zIGZyb20gdGhlIG1hcCwgYW5kIHRvIGluc3RlYWQgaGF2ZSB0aGUgbWFwIGF1dG9tYXRpY2Fs
bHkgcmVtb3ZlCisgICAgICAgIHN0YWxlIGl0ZW1zIGl0c2VsZiB1cG9uIGluc2VydGlvbi4gVGhp
cyBoYXMgYSBmZXcgYWR2YW50YWdlczoKKworICAgICAgICAoMSkgV2Vha0dDTWFwIGlzIG5vdyBj
b21wYXRpYmxlIHdpdGggYWxsIHRoZSBzcGVjaWFsaXphdGlvbnMgeW91IHdvdWxkCisgICAgICAg
IHVzZSBmb3IgSGFzaE1hcC4KKworICAgICAgICAoMikgVGhlcmUncyBubyBuZWVkIGZvciBjbGll
bnRzIHRvIHdyaXRlIHNwZWNpYWwgZmluYWxpemF0aW9uIG11bmdpbmcKKyAgICAgICAgZnVuY3Rp
b25zLgorCisgICAgICAgICgzKSBDbGllbnRzIGNhbiBzcGVjaWZ5IGN1c3RvbSB2YWx1ZSBmaW5h
bGl6ZXJzIGlmIHRoZXkgbGlrZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmOiBEZWYhCisKKyAgICAgICAg
KiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHA6IFNldHRlciBubyBsb25nZXIgcmVx
dWlyZXMgYSBnbG9iYWwKKyAgICAgICAgZGF0YSwgc2luY2Ugd2UndmUgcmVkdWNlZCBpbnRlcmRl
cGVuZGVuY3kuCisKKyAgICAgICAgKiBoZWFwL0hhbmRsZS5oOiBObyBtb3JlIG5lZWQgdG8gZm9y
d2FyZCBkZWNsYXJlLCBzaW5jZSB3ZSd2ZSByZWR1Y2VkCisgICAgICAgIGludGVyZGVwZW5kZW5j
eS4KKworICAgICAgICAqIGhlYXAvV2Vhay5oOgorICAgICAgICAoV2Vhayk6IFVzZSBleHBsaWNp
dCBzbyB3ZSBjYW4gYXNzaWduIGRpcmVjdGx5IHRvIGEgd2VhayBtYXAgaXRlcmF0b3IKKyAgICAg
ICAgd2l0aG91dCBhbWJpZ3VpdHkgYmV0d2VlbiBXZWFrPFQ+IGFuZCBQYXNzV2VhazxUPi4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOjphZGQpOiBTZWUgYWJvdmUuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oOgorICAgICAgICAoU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKTogQmFk
IGNvZGUgZ29lcyBhd2F5LCBwcm9ncmFtbWVyIGhhcHB5LgorCisgICAgICAgICogcnVudGltZS9X
ZWFrR0NNYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChXZWFrR0NNYXApOgorICAgICAg
ICAoSlNDOjpXZWFrR0NNYXA6OldlYWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6
c2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjphZGQpOgorICAgICAgICAoSlNDOjpXZWFr
R0NNYXA6OmZpbmQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OmNvbnRhaW5zKToKKyAgICAg
ICAgKEpTQzo6V2Vha0dDTWFwOjpnY01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6Z2NN
YXBJZk5lZWRlZCk6IEluaGVyaXQgZnJvbSBIYXNoTWFwIGFuZCBvdmVycmlkZSBhbnkKKyAgICAg
ICAgZnVuY3Rpb24gdGhhdCBtaWdodCBvYnNlcnZlIGEgV2VhazxUPiB0aGF0IGhhcyBkaWVkLCBq
dXN0IGVub3VnaCB0bworICAgICAgICBtYWtlIHN1Y2ggaXRlbXMgYXBwZWFyIGFzIGlmIHRoZXkg
YXJlIG5vdCBpbiB0aGUgdGFibGUuCisKIDIwMTMtMDEtMTggIE1pY2hhZWwgU2Fib2ZmICA8bXNh
Ym9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgaXNQb3dlck9mMigpIGFuZCBhZGQg
Z2V0TFNCU2V0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0
TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkocmV2aXNpb24gMTQwMTkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEpTV2Vha09iamVjdE1hcFNldChKU0Nv
bnRleHRSZWYgY3R4CiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
b2JqLT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykg
fHwgb2JqLT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46
OnNfaW5mbykpOwotICAgIG1hcC0+bWFwKCkuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBv
YmopOworICAgIG1hcC0+bWFwKCkuc2V0KGtleSwgb2JqKTsKIH0KIAogSlNPYmplY3RSZWYgSlNX
ZWFrT2JqZWN0TWFwR2V0KEpTQ29udGV4dFJlZiBjdHgsIEpTV2Vha09iamVjdE1hcFJlZiBtYXAs
IHZvaWQqIGtleSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYJKHJldmlzaW9uIDE0MDE5MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw2
IEBAIEVYUE9SVFMKICAgICA/Y2xhc3NOYW1lQEpTT2JqZWN0QEpTQ0BAU0E/QVZTdHJpbmdAV1RG
QEBQQlYxMkBAWgogICAgID9jbGFzc05hbWVASlNQcm94eUBKU0NAQEtBP0FWU3RyaW5nQFdURkBA
UEJWSlNPYmplY3RAMkBAWgogICAgID9jbGVhckBTb3VyY2VQcm92aWRlckNhY2hlQEpTQ0BAUUFF
WFhaCi0gICAgP2NsZWFyUmFyZURhdGFASlNHbG9iYWxPYmplY3RASlNDQEBDQVhQQVZKU0NlbGxA
MkBAWgogICAgID9jb2xsYXRlQENvbGxhdG9yQFdURkBAUUJFP0FXNFJlc3VsdEAxMkBQQl9XSTBJ
QFoKICAgICA/Y29sbGVjdEFsbEdhcmJhZ2VASGVhcEBKU0NAQFFBRVhYWgogICAgID9jb21wdXRl
SGFzaEBTSEExQFdURkBAUUFFWEFBVj8kVmVjdG9yQEUkMEJFQEAyQEBaCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGUuaAkocmV2aXNpb24gMTQwMTkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxMCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwogLy8gQ3JlYXRpbmcgYSBKU1ZhbHVl
IEhhbmRsZSBpcyBpbnZhbGlkCiB0ZW1wbGF0ZSA8PiBjbGFzcyBIYW5kbGU8SlNWYWx1ZT47CiAK
LS8vIEZvcndhcmQgZGVjbGFyZSBXZWFrR0NNYXAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUs
IHR5cGVuYW1lIE1hcHBlZFR5cGUsIHR5cGVuYW1lIEZpbmFsaXplckNhbGxiYWNrLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IGNsYXNzIFdlYWtHQ01hcDsKLQogY2xh
c3MgSGFuZGxlQmFzZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBX
ZWFrOwogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIHN0cnVjdCBKU0Nh
bGxiYWNrT2JqZWN0RGF0YTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5h
bWUgTWFwcGVkVHlwZSwgdHlwZW5hbWUgRmluYWxpemVyQ2FsbGJhY2ssIHR5cGVuYW1lIEhhc2hB
cmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4gZnJpZW5kIGNsYXNzIFdlYWtHQ01hcDsKIAogcHVi
bGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2xvdCB8fCAhKm1f
c2xvdDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gMTQwMTky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtJbXBsQWNj
ZXNzb3I8V2VhazxUPiwgVD46OkdldFR5cGUgR2V0VHlwZTsKIAogICAgIFdlYWsoKTsKLSAgICBX
ZWFrKHN0ZDo6bnVsbHB0cl90KTsKLSAgICBXZWFrKEdldFR5cGUsIFdlYWtIYW5kbGVPd25lciog
PSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CisgICAgZXhwbGljaXQgV2VhayhzdGQ6Om51bGxwdHJf
dCk7CisgICAgZXhwbGljaXQgV2VhayhHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9p
ZCogY29udGV4dCA9IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBI
YXNoVGFibGVEZWxldGVkVmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDE0MDE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxpbmUg
dm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkCiAgICAgLy8gTmV3ZXIgdmVyc2lvbnMg
b2YgdGhlIFNUTCBoYXZlIGFuIHN0ZDo6bWFrZV9wYWlyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgcnZh
bHVlIHJlZmVyZW5jZXMuCiAgICAgLy8gV2hlbiBlaXRoZXIgb2YgdGhlIHBhcmFtZXRlcnMgYXJl
IGJpdGZpZWxkcywgdGhlIEMrKyBjb21waWxlciB3aWxsIHRyeSB0byBiaW5kIHRoZW0gYXMgbHZh
bHVlcywgd2hpY2ggaXMgaW52YWxpZC4gVG8gd29yayBhcm91bmQgdGhpcywgdXNlIHVuYXJ5ICIr
IiB0byBtYWtlIHRoZSBwYXJhbWV0ZXIgYW4gcnZhbHVlLgogICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNjEgZm9yIG1vcmUgZGV0YWlscwotICAg
IG1hcCgpLT5zZXQoZ2xvYmFsRGF0YSwgbWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2
aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIHN0cnVjdHVyZSk7Cisg
ICAgbWFwKCktPnNldChtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCArc3Ry
dWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKIH0KIAogdm9pZCBT
dHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDAxOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDE0ICs1Mjcs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9zdGFjay5hcHBlbmQoY2VsbCk7CiAgICAg
fQogCi0gICAgaW5saW5lIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5IFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6a2V5Rm9yV2Vha0dDTWFwRmluYWxpemVyKHZvaWQqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIC8vIE5ld2VyIHZlcnNpb25zIG9mIHRo
ZSBTVEwgaGF2ZSBhbiBzdGQ6Om1ha2VfcGFpciBmdW5jdGlvbiB0aGF0IHRha2VzIHJ2YWx1ZSBy
ZWZlcmVuY2VzLgotICAgICAgICAvLyBXaGVuIGVpdGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUg
Yml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdpbGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFs
dWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisi
IHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFsdWUuCi0gICAgICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNjEgZm9yIG1vcmUgZGV0YWlscy4K
LSAgICAgICAgcmV0dXJuIEhhc2g6OktleShzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0
KCksICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpOwotICAgIH0KLQogICAgIGlu
bGluZSBib29sIFN0cnVjdHVyZTo6dHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZVRvRmluZCkKICAgICB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlKiBjdXJy
ZW50ID0gdGhpczsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnByZXZpb3VzSUQoKSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlzaW9uIDE0MDE5MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsMjEgKzExMSw3IEBAIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKICAgICB9OwogCi0gICAgc3RydWN0IFdlYWtHQ01hcEZpbmFsaXplckNhbGxiYWNrIHsK
LSAgICAgICAgc3RhdGljIHZvaWQqIGZpbmFsaXplckNvbnRleHRGb3IoSGFzaDo6S2V5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBpbmxpbmUgSGFzaDo6S2V5IGtleUZvckZpbmFsaXplcih2b2lkKiBjb250ZXh0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleUZvcldlYWtH
Q01hcEZpbmFsaXplcihjb250ZXh0LCBzdHJ1Y3R1cmUpOwotICAgICAgICB9Ci0gICAgfTsKLQot
ICAgIHR5cGVkZWYgV2Vha0dDTWFwPEhhc2g6OktleSwgU3RydWN0dXJlLCBXZWFrR0NNYXBGaW5h
bGl6ZXJDYWxsYmFjaywgSGFzaD4gVHJhbnNpdGlvbk1hcDsKLQotICAgIHN0YXRpYyBIYXNoOjpL
ZXkga2V5Rm9yV2Vha0dDTWFwRmluYWxpemVyKHZvaWQqIGNvbnRleHQsIFN0cnVjdHVyZSopOwor
ICAgIHR5cGVkZWYgV2Vha0dDTWFwPEhhc2g6OktleSwgU3RydWN0dXJlLCBIYXNoPiBUcmFuc2l0
aW9uTWFwOwogCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCShyZXZpc2lvbiAxNDAx
OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsODggKzI2LDEwMyBAQAogI2lmbmRlZiBXZWFrR0NNYXBfaAogI2RlZmlu
ZSBXZWFrR0NNYXBfaAogCi0jaW5jbHVkZSAiSGFuZGxlLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxE
YXRhLmgiCisjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCi0vLyBBIEhhc2hNYXAgZm9yIEdDJ2QgdmFsdWVzIHRoYXQgcmVtb3Zl
cyBlbnRyaWVzIHdoZW4gdGhlIGFzc29jaWF0ZWQgdmFsdWUKLS8vIGRpZXMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IERlZmF1bHRXZWFr
R0NNYXBGaW5hbGl6ZXJDYWxsYmFjayB7Ci0gICAgc3RhdGljIHZvaWQqIGZpbmFsaXplckNvbnRl
eHRGb3IoS2V5VHlwZSBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oa2V5KTsKLSAgICB9CisvLyBBIEhhc2hNYXAgd2l0aCBXZWFrPEpTQ2VsbD4gdmFs
dWVzLCB3aGljaCBhdXRvbWF0aWNhbGx5IHJlbW92ZXMgdmFsdWVzIG9uY2UgdGhleSdyZSBnYXJi
YWdlIGNvbGxlY3RlZC4KIAotICAgIHN0YXRpYyBLZXlUeXBlIGtleUZvckZpbmFsaXplcih2b2lk
KiBjb250ZXh0LCB0eXBlbmFtZSBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6RXh0ZXJuYWxUeXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8S2V5VHlwZT4oY29udGV4
dCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFw
cGVkVHlwZSwgdHlwZW5hbWUgRmluYWxpemVyQ2FsbGJhY2sgPSBEZWZhdWx0V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2s8S2V5VHlwZSwgTWFwcGVkVHlwZT4sIHR5cGVuYW1lIEhhc2hBcmcgPSB0
eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlUeXBlPjo6SGFzaCwgdHlwZW5hbWUgS2V5VHJhaXRzQXJn
ID0gSGFzaFRyYWl0czxLZXlUeXBlPiA+Ci1jbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIFdlYWtI
YW5kbGVPd25lciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2Vha0dDTWFwKTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxLZXlUeXBlLCBX
ZWFrSW1wbCosIEhhc2hBcmcsIEtleVRyYWl0c0FyZz4gTWFwVHlwZTsKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBl
OwordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBSYXdNYXBwZWRBcmcsIHR5cGVu
YW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAorICAgIHR5
cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiA+CitjbGFzcyBXZWFrR0NN
YXAgOiBwdWJsaWMgSGFzaE1hcDxLZXlBcmcsIFdlYWs8UmF3TWFwcGVkQXJnPiwgSGFzaEFyZywg
S2V5VHJhaXRzQXJnPiB7CisgICAgdHlwZWRlZiBXZWFrPFJhd01hcHBlZEFyZz4gTWFwcGVkVHlw
ZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRUeXBlLCBIYXNoQXJnLCBLZXlU
cmFpdHNBcmc+IEJhc2U7CisgICAgdHlwZWRlZiBXZWFrR0NNYXA8S2V5QXJnLCBSYXdNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz4gU2VsZjsKKyAgICB0eXBlZGVmIEhhc2hUcmFpdHM8
TWFwcGVkVHlwZT4gTWFwcGVkVHJhaXRzOworICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzOjpQYXNzSW5UeXBlIE1hcHBlZFBhc3NJblR5cGU7CiAKIHB1YmxpYzoKKyAgICB1c2luZyB0
eXBlbmFtZSBCYXNlOjpLZXlUeXBlOworICAgIHVzaW5nIHR5cGVuYW1lIEJhc2U6OkFkZFJlc3Vs
dDsKKyAgICB1c2luZyB0eXBlbmFtZSBCYXNlOjppdGVyYXRvcjsKKyAgICB1c2luZyB0eXBlbmFt
ZSBCYXNlOjpjb25zdF9pdGVyYXRvcjsKKyAgICB1c2luZyBCYXNlOjpiZWdpbjsKKyAgICB1c2lu
ZyBCYXNlOjplbmQ7CisgICAgdXNpbmcgQmFzZTo6c2l6ZTsKKyAgICB1c2luZyBCYXNlOjpyZW1v
dmU7CisKICAgICBXZWFrR0NNYXAoKQorICAgICAgICA6IG1fZ2NUaHJlc2hvbGQobWluR0NUaHJl
c2hvbGQpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgY2xlYXIoKQorICAgIEFkZFJlc3VsdCBz
ZXQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7Ci0gICAg
ICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgcHRyID0gbV9tYXAuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpCi0gICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKHB0ci0+
dmFsdWUpOwotICAgICAgICBtX21hcC5jbGVhcigpOworICAgICAgICBnY01hcElmTmVlZGVkKCk7
CisgICAgICAgIHJldHVybiBCYXNlOjpzZXQoa2V5LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgRXh0
ZXJuYWxUeXBlIGdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CisgICAgQWRkUmVzdWx0IGFk
ZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgdmFsdWUpCiAgICAgewotICAg
ICAgICBXZWFrSW1wbCogaW1wbCA9IG1fbWFwLmdldChrZXkpOwotICAgICAgICBpZiAoIWltcGwg
fHwgaW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZSkKLSAgICAgICAgICAgIHJldHVybiBF
eHRlcm5hbFR5cGUoKTsKLSAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+Ojpn
ZXRGcm9tU2xvdChjb25zdF9jYXN0PEpTVmFsdWUqPigmaW1wbC0+anNWYWx1ZSgpKSk7CisgICAg
ICAgIGdjTWFwSWZOZWVkZWQoKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZFJlc3VsdCA9IEJhc2U6
OmFkZChrZXksIHZhbHVlKTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiAh
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkgeyAvLyBGb3VuZCBhIHpvbWJpZSB2YWx1ZS4KKyAg
ICAgICAgICAgIGFkZFJlc3VsdC5pc05ld0VudHJ5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YWRkUmVzdWx0OwogICAgIH0KIAotICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgaXRlcmF0b3Ig
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuYXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkpOwotICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAu
YWRkKGtleSwgMCk7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAg
ICBXZWFrU2V0OjpkZWFsbG9jYXRlKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2Vha1NldDo6YWxsb2NhdGUodmFsdWUsIHRoaXMsIEZp
bmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOworICAgICAgICBpdGVy
YXRvciBpdCA9IEJhc2U6OmZpbmQoa2V5KTsKKyAgICAgICAgaXRlcmF0b3IgZW5kID0gQmFzZTo6
ZW5kKCk7CisgICAgICAgIGlmIChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgLy8gRm91bmQgYSB6
b21iaWUgdmFsdWUuCisgICAgICAgICAgICByZXR1cm4gZW5kOworICAgICAgICByZXR1cm4gaXQ7
CiAgICAgfQogCi0gICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIGNvbnN0
X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgIHsKLSAgICAgICAg
V2Vha0ltcGwqIGltcGwgPSBtX21hcC50YWtlKGtleSk7Ci0gICAgICAgIGlmICghaW1wbCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShpbXBsKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VsZio+KHRoaXMpLT5maW5kKGtleSk7CiAgICAgfQog
Ci0gICAgfldlYWtHQ01hcCgpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+IGJvb2wgY29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKLSAg
ICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZpbmQoa2V5KSAhPSBlbmQoKTsKICAgICB9
Ci0gICAgCisKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtu
b3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCisgICAgc3RhdGljIGNvbnN0IGludCBtaW5HQ1Ro
cmVzaG9sZDsKKworICAgIHZvaWQgZ2NNYXAoKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEtleVR5
cGUsIDQ+IHpvbWJpZXM7CisgICAgICAgIGl0ZXJhdG9yIGVuZCA9IHRoaXMtPmVuZCgpOworICAg
ICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICBpZiAoIWl0LT52YWx1ZSkKKyAgICAgICAgICAgICAgICB6b21iaWVzLmFwcGVuZChp
dC0+a2V5KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHpvbWJp
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICByZW1vdmUoem9tYmllc1tpXSk7CisgICAgfQor
CisgICAgdm9pZCBnY01hcElmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIFdlYWtJbXBsKiBpbXBs
ID0gbV9tYXAudGFrZShGaW5hbGl6ZXJDYWxsYmFjazo6a2V5Rm9yRmluYWxpemVyKGNvbnRleHQs
IEhhbmRsZVR5cGVzPE1hcHBlZFR5cGU+OjpnZXRGcm9tU2xvdChoYW5kbGUuc2xvdCgpKSkpOwot
ICAgICAgICBBU1NFUlQoaW1wbCk7Ci0gICAgICAgIFdlYWtTZXQ6OmRlYWxsb2NhdGUoaW1wbCk7
CisgICAgICAgIGlmIChzaXplKCkgPCBtX2djVGhyZXNob2xkKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGdjTWFwKCk7CisgICAgICAgIG1fZ2NUaHJlc2hvbGQgPSBzdGQ6Om1heCht
aW5HQ1RocmVzaG9sZCwgc2l6ZSgpICogMiAtIDEpOwogICAgIH0KIAotICAgIE1hcFR5cGUgbV9t
YXA7CisgICAgaW50IG1fZ2NUaHJlc2hvbGQ7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIFJhd01hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnPgorY29uc3QgaW50IFdlYWtHQ01hcDxLZXlBcmcsIFJhd01hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnPjo6bWluR0NUaHJlc2hvbGQgPSAzOworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIFdlYWtHQ01hcF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDAxOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNyBAQAorMjAxMy0wMS0xOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYWsgR0MgbWFwcyBzaG91bGQgYmUgZWFzaWVyIHRvIHVzZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzEyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ugd2VhayBHQyBt
YXBzIGFyZSBzbyBlYXN5IHRvIHVzZSBub3csIGxldCdzIHVzZSB0aGVtIGZvciB0aGUgRE9NCisg
ICAgICAgIHN0cmluZyBjYWNoZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6RE9NV3JhcHBlcldvcmxkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpnbG9iYWxEYXRhKToKKyAgICAg
ICAgKERPTVdyYXBwZXJXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1N0cmluZ1dp
dGhDYWNoZSk6CisKIDIwMTMtMDEtMTggIFRpbSBWb2xvZGluZSAgPHRpbXZvbG9kaW5lQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IGRvbid0IGF1dG9zaXplIGhlYWRl
cnMgd2l0aCBtdWx0aXBsZSBpbmxpbmUgbGlua3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTQwMTkyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTY4Nyw3ICs2ODcsNiBAQCBfX1pON1dlYkNvcmUyNUltbXV0YWJsZVN0eWxl
UHJvcGVydHlTZXRECiBfX1pON1dlYkNvcmUyNWFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJFUHZQ
RnZTMF9FCiBfX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3
cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFCiBfX1pON1dlYkNvcmUyNWNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmdFdgotX19aTjdXZWJDb3JlMjVqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNl
RVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxFTlMwXzRX
ZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNoVHJhaXRzSVM2
X0VFTlNDX0lTOV9FRUVFUzZfCiBfX1pON1dlYkNvcmUyNk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pON1dlYkNvcmUyNlVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yMjdwcm9jZXNzaW5nVXNlclR5cGluZ0dlc3R1cmVFdgogX19aTjdXZWJDb3Jl
MjZVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjI4Zm9jdXNlZEVsZW1lbnRBdEdlc3R1cmVTdGFy
dEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3Js
ZC5jcHAJKHJldmlzaW9uIDE0MDE5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE3ICszMCw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1N0cmluZ093
bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29u
dGV4dCkKLXsKLSAgICBKU1N0cmluZyoganNTdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdJbXBsKj4oY29udGV4dCk7Ci0gICAgd2Vha1JlbW92ZShtX3dvcmxkLT5tX3N0
cmluZ0NhY2hlLCBzdHJpbmdJbXBsLCBqc1N0cmluZyk7Ci19Ci0KIERPTVdyYXBwZXJXb3JsZDo6
RE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGlzTm9y
bWFsKQogICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX2lzTm9ybWFsKGlz
Tm9ybWFsKQotICAgICwgbV9zdHJpbmdXcmFwcGVyT3duZXIodGhpcykKIHsKICAgICBKU0dsb2Jh
bERhdGE6OkNsaWVudERhdGEqIGNsaWVudERhdGEgPSBtX2dsb2JhbERhdGEtPmNsaWVudERhdGE7
CiAgICAgQVNTRVJUKGNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDE0MDE5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwy
MSArMzQsNyBAQCBjbGFzcyBKU0RPTVdyYXBwZXI7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwog
CiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+ID4gRE9NT2Jq
ZWN0V3JhcHBlck1hcDsKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmdJbXBsKiwgSlNDOjpXZWFrPEpT
Qzo6SlNTdHJpbmc+LCBQdHJIYXNoPFN0cmluZ0ltcGwqPiA+IEpTU3RyaW5nQ2FjaGU7Ci0KLWNs
YXNzIEpTU3RyaW5nT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGlj
OgotICAgIEpTU3RyaW5nT3duZXIoRE9NV3JhcHBlcldvcmxkKik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotCi1w
cml2YXRlOgotICAgIERPTVdyYXBwZXJXb3JsZCogbV93b3JsZDsKLX07Ci0KLWlubGluZSBKU1N0
cmluZ093bmVyOjpKU1N0cmluZ093bmVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCi0gICAgOiBt
X3dvcmxkKHdvcmxkKQotewotfQordHlwZWRlZiBKU0M6OldlYWtHQ01hcDxTdHJpbmdJbXBsKiwg
SlNDOjpKU1N0cmluZywgUHRySGFzaDxTdHJpbmdJbXBsKj4gPiBKU1N0cmluZ0NhY2hlOwogCiBj
bGFzcyBET01XcmFwcGVyV29ybGQgOiBwdWJsaWMgUmVmQ291bnRlZDxET01XcmFwcGVyV29ybGQ+
IHsKIHB1YmxpYzoKQEAgLTcyLDcgKzU4LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNOb3JtYWwo
KSBjb25zdCB7IHJldHVybiBtX2lzTm9ybWFsOyB9CiAKICAgICBKU0M6OkpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQotICAgIEpTU3RyaW5n
T3duZXIqIHN0cmluZ1dyYXBwZXJPd25lcigpIHsgcmV0dXJuICZtX3N0cmluZ1dyYXBwZXJPd25l
cjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRh
KiwgYm9vbCBpc05vcm1hbCk7CkBAIC04MSw3ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgSlNDOjpK
U0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICBIYXNoU2V0PFNjcmlwdENvbnRyb2xsZXIq
PiBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxsczsKICAgICBib29sIG1faXNOb3Jt
YWw7Ci0gICAgSlNTdHJpbmdPd25lciBtX3N0cmluZ1dyYXBwZXJPd25lcjsKIH07CiAKIERPTVdy
YXBwZXJXb3JsZCogbm9ybWFsV29ybGQoSlNDOjpKU0dsb2JhbERhdGEmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMTQwMTky
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDYgQEAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hU
YWJsZUZvckdsbwogICAgIHJldHVybiBET01PYmplY3RIYXNoVGFibGVNYXA6Om1hcEZvcihnbG9i
YWxEYXRhKS5nZXQoc3RhdGljVGFibGUpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hl
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSwgU3Ry
aW5nSW1wbCogc3RyaW5nSW1wbCkKLXsKLSAgICBKU1N0cmluZyogd3JhcHBlciA9IEpTQzo6anNT
dHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKLSAgICB3ZWFrQWRkKHN0cmluZ0NhY2hl
LCBzdHJpbmdJbXBsLCBQYXNzV2VhazxKU1N0cmluZz4od3JhcHBlciwgY3VycmVudFdvcmxkKGV4
ZWMpLT5zdHJpbmdXcmFwcGVyT3duZXIoKSwgc3RyaW5nSW1wbCkpOwotICAgIHJldHVybiB3cmFw
cGVyOwotfQotCiBKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDE0MDE5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
TnVsbFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0yNjksNyArMjcwLDYgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICB2b2lk
IHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogCiAgICAg
SlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2UoSlNDOjpF
eGVjU3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOwogICAgIEpTQzo6SlNWYWx1
ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gZW1wdHkgaWYgdGhl
IFVSTCBpcyBudWxsCiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIHsgCkBAIC01
MDMsMTAgKzUwMywxMCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICB9
CiAKICAgICAgICAgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUgPSBjdXJyZW50V29ybGQoZXhl
YyktPm1fc3RyaW5nQ2FjaGU7Ci0gICAgICAgIGlmIChKU0M6OkpTU3RyaW5nKiBzdHJpbmcgPSBz
dHJpbmdDYWNoZS5nZXQoc3RyaW5nSW1wbCkpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5nOwot
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlKGV4ZWMsIHN0cmluZ0Nh
Y2hlLCBzdHJpbmdJbXBsKTsKKyAgICAgICAgSlNTdHJpbmdDYWNoZTo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IHN0cmluZ0NhY2hlLmFkZChzdHJpbmdJbXBsLCBudWxscHRyKTsKKyAgICAgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZShhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183537</attachid>
            <date>2013-01-18 13:40:35 -0800</date>
            <delta_ts>2013-01-20 16:57:53 -0800</delta_ts>
            <desc>For some reason &quot;using&quot; doesn&apos;t  work on linuxes. Replace it with &quot;typedef&quot;.</desc>
            <filename>JS_build_fix.diff</filename>
            <type>text/plain</type>
            <size>1472</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRjMjMwM2EuLjI2Njk3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTE4ICBWaWF0Y2hlc2xhdiBP
c3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgV2VhayBHQyBt
YXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCdWlsZCBmaXggZm9yIGxpbnV4IHBsYXRmb3JtcyBhZnRlciBy
MTQwMTk0LgorCisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdlYWtH
Q01hcCk6CisKIDIwMTMtMDEtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZv
ciBKU1ZhbHVlIGFuZCBKU0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDTWFwLmgKaW5kZXggN2Y2MzUxMy4uNWExNjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTQzLDEwICs0MywxMCBAQCBjbGFzcyBXZWFrR0NNYXAg
OiBwdWJsaWMgSGFzaE1hcDxLZXlBcmcsIFdlYWs8UmF3TWFwcGVkQXJnPiwgSGFzaEFyZywgS2V5
VHJhaXRzQQogICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFwcGVkVHJhaXRzOjpQYXNzSW5UeXBlIE1h
cHBlZFBhc3NJblR5cGU7CiAKIHB1YmxpYzoKLSAgICB1c2luZyB0eXBlbmFtZSBCYXNlOjpLZXlU
eXBlOwotICAgIHVzaW5nIHR5cGVuYW1lIEJhc2U6OkFkZFJlc3VsdDsKLSAgICB1c2luZyB0eXBl
bmFtZSBCYXNlOjppdGVyYXRvcjsKLSAgICB1c2luZyB0eXBlbmFtZSBCYXNlOjpjb25zdF9pdGVy
YXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6OktleVR5cGUgS2V5VHlwZTsKKyAgICB0
eXBlZGVmIHR5cGVuYW1lIEJhc2U6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBCYXNlOjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJh
c2U6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIHVzaW5nIEJhc2U6OmJlZ2lu
OwogICAgIHVzaW5nIEJhc2U6OmVuZDsKICAgICB1c2luZyBCYXNlOjpzaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183692</attachid>
            <date>2013-01-20 16:57:59 -0800</date>
            <delta_ts>2013-01-21 10:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107312-20130120165455.patch</filename>
            <type>text/plain</type>
            <size>2517</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMjgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDEzLTAxLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2VhayBHQyBtYXBzIHNob3VsZCBiZSBlYXNpZXIgdG8gdXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3ctdXAgZml4LgorCisgICAgICAg
ICogcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwOgorICAgICAgICAoSlNDOjpQcm90b3R5cGVNYXA6
OmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKTogUmVzdG9yZWQgdGhpcworICAgICAg
ICBBU1NFUlQsIHdoaWNoIHdhcyBkaXNhYmxlZCBiZWNhdXNlIG9mIGEgYnVnIGluIFdlYWtHQ01h
cC4KKworICAgICAgICAqIHJ1bnRpbWUvV2Vha0dDTWFwLmg6CisgICAgICAgIChKU0M6OldlYWtH
Q01hcDo6YWRkKTogV2UgY2FuJ3QgcGFzcyBvdXIgcGFzc2VkLWluIHZhbHVlIHRvIGFkZCgpIGJl
Y2F1c2UKKyAgICAgICAgYSBQYXNzV2VhaygpIGNsZWFycyBpdHNlbGYgd2hlbiBwYXNzZWQgdG8g
YW5vdGhlciBmdW5jdGlvbi4gU28sIHdlIHBhc3MKKyAgICAgICAgbnVsbHB0ciBpbnN0ZWFkLCBh
bmQgZml4IHRoaW5ncyB1cCBhZnRlcndhcmRzLgorCiAyMDEzLTAxLTIwICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNwcAkocmV2aXNpb24g
MTQwMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlTWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsMTAgQEAgdm9pZCBQcm90b3R5cGVNYXA6OmFk
ZFByb3RvdHlwZShKU09iamVjdAogU3RydWN0dXJlKiBQcm90b3R5cGVNYXA6OmVtcHR5T2JqZWN0
U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2Vha0dDTWFw
PEpTT2JqZWN0KiwgU3RydWN0dXJlPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc3RydWN0dXJl
cy5hZGQob2JqZWN0LCBudWxscHRyKTsKLSAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQor
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKGlzUHJvdG90
eXBlKG9iamVjdCkpOwogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKKyAgICB9CiAKICAgICBhZGRQcm90b3R5cGUob2JqZWN0KTsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShvYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxEYXRhKCksIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIG9iamVjdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNp
b24gMTQwMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIEFkZFJlc3VsdCBh
ZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgZ2NNYXBJZk5lZWRlZCgpOwotICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gQmFz
ZTo6YWRkKGtleSwgdmFsdWUpOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5ICYm
ICFhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSB7IC8vIEZvdW5kIGEgem9tYmllIHZhbHVlLgor
ICAgICAgICBBZGRSZXN1bHQgYWRkUmVzdWx0ID0gQmFzZTo6YWRkKGtleSwgbnVsbHB0cik7Cisg
ICAgICAgIGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkgeyAvLyBOZXcgdmFsdWUgb3Ig
Zm91bmQgYSB6b21iaWUgdmFsdWUuCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXNOZXdFbnRyeSA9
IHRydWU7CiAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gdmFsdWU7CiAg
ICAgICAgIH0K
</data>
<flag name="review"
          id="202153"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>