<?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>55640</bug_id>
          
          <creation_ts>2011-03-02 18:30:57 -0800</creation_ts>
          <short_desc>Cursor.continue with a key param should test less than, not equal to</short_desc>
          <delta_ts>2011-03-03 18:19:00 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>361286</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 18:30:57 -0800</bug_when>
    <thetext>Cursor.continue with a key param should test less than, not equal to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361288</commentid>
    <comment_count>1</comment_count>
      <attachid>84504</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 18:32:01 -0800</bug_when>
    <thetext>Created attachment 84504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361289</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-02 18:32:45 -0800</bug_when>
    <thetext>Steve, can you please review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361853</commentid>
    <comment_count>3</comment_count>
      <attachid>84504</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-03 12:50:13 -0800</bug_when>
    <thetext>Comment on attachment 84504
Patch

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

&gt; LayoutTests/storage/indexeddb/cursor-continue.html:38
&gt; +    &quot;the BIGEST string&quot;

BIGGEST

&gt; LayoutTests/storage/indexeddb/cursor-continue.html:90
&gt; +    // OOPS: Don&apos;t land. Hack.

???

&gt; Source/WebCore/ChangeLog:8
&gt; +        If you supply a param to cursor.continue, we sould guarentee that

should guarantee

&gt; Source/WebCore/ChangeLog:10
&gt; +        Right now, we only test equality.

Do you have a link to this in the spec?

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:137
&gt; +        // If a key was supplied, we must loop until we find a key greater than or equal to it (or hit the end).

Given the &apos;else&apos; below, this comment seems to describe only half the story, or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361891</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-03 13:27:37 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 84504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84504&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/cursor-continue.html:38
&gt; &gt; +    &quot;the BIGEST string&quot;
&gt; 
&gt; BIGGEST

Will fix.
 
&gt; &gt; LayoutTests/storage/indexeddb/cursor-continue.html:90
&gt; &gt; +    // OOPS: Don&apos;t land. Hack.
&gt; 
&gt; ???

Don&apos;t worry, will remove before I land.  (The version I was developing against didn&apos;t have that patch yet.

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        If you supply a param to cursor.continue, we sould guarentee that
&gt; 
&gt; should guarantee

Will do

&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Right now, we only test equality.
&gt; 
&gt; Do you have a link to this in the spec?

http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue
http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-steps-for-iterating-a-cursor

&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:137
&gt; &gt; +        // If a key was supplied, we must loop until we find a key greater than or equal to it (or hit the end).
&gt; 
&gt; Given the &apos;else&apos; below, this comment seems to describe only half the story, or am I missing something?

I&apos;d hope that a reader would look at the rest of it as well.  I guess I could make it a bit more clear.


Do you have any substantive concerns?  If not, I can haz r+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361949</commentid>
    <comment_count>5</comment_count>
      <attachid>84504</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-03 14:37:14 -0800</bug_when>
    <thetext>Comment on attachment 84504
Patch

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

&gt;&gt;&gt; LayoutTests/storage/indexeddb/cursor-continue.html:38
&gt;&gt;&gt; +    &quot;the BIGEST string&quot;
&gt;&gt; 
&gt;&gt; BIGGEST
&gt; 
&gt; Will fix.

BIGGEST

&gt;&gt;&gt; LayoutTests/storage/indexeddb/cursor-continue.html:90
&gt;&gt;&gt; +    // OOPS: Don&apos;t land. Hack.
&gt;&gt; 
&gt;&gt; ???
&gt; 
&gt; Don&apos;t worry, will remove before I land.  (The version I was developing against didn&apos;t have that patch yet.

???

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        Right now, we only test equality.
&gt;&gt; 
&gt;&gt; Do you have a link to this in the spec?
&gt; 
&gt; http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBCursor-continue
&gt; http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#dfn-steps-for-iterating-a-cursor

OK, would be good to add this to the bug URL field or the ChangeLog

&gt;&gt;&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:137
&gt;&gt;&gt; +        // If a key was supplied, we must loop until we find a key greater than or equal to it (or hit the end).
&gt;&gt; 
&gt;&gt; Given the &apos;else&apos; below, this comment seems to describe only half the story, or am I missing something?
&gt; 
&gt; I&apos;d hope that a reader would look at the rest of it as well.  I guess I could make it a bit more clear.
&gt; 
&gt; 
&gt; Do you have any substantive concerns?  If not, I can haz r+?

Sure, but the bug and ChangeLog only mention the forward case, so I wanted to check that I understood correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362177</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-03 18:19:00 -0800</bug_when>
    <thetext>Committed r80308: &lt;http://trac.webkit.org/changeset/80308&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84504</attachid>
            <date>2011-03-02 18:32:01 -0800</date>
            <delta_ts>2011-03-03 14:37:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55640-20110302183200.patch</filename>
            <type>text/plain</type>
            <size>15110</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAxNjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTUxMDFiMzFkODI3ZTA4NDkyZjc5
Zjc4NzU2NzRjNmY1Nzg5ZjE1Li45NjliNjZmZDNiZGVkMGI2MmM5NzU5MTZiODNhNGFlN2I0YTc4
OGRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMDIgIEplcmVteSBPcmxvdyAgPGpv
cmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3Vyc29yLmNvbnRpbnVlIHdpdGggYSBrZXkgcGFyYW0gc2hvdWxkIHRlc3Qg
bGVzcyB0aGFuLCBub3QgZXF1YWwgdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU1NjQwCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItY29udGludWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItY29udGludWUuaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMDIgIE1paGFpIFBh
cnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJv
bWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTIxNTJhNTE0MjRhZDc3ZjZhZmI1YzZhMmY4OTc3YzRiOTU1ZGVmOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3OSBAQAorVGVzdCBJbmRleGVkREIncyBJREJDdXJzb3IuY29udGlu
dWUoKSB3aXRoIGEga2V5IHBhcmFtZXRlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCdjdXJzb3ItY29udGludWUnKQorZGIgPSBldmVudC50
YXJnZXQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCit0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKQor
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykKK29iamVjdFN0b3JlLmFk
ZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRk
KHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQo
eyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKK29iamVjdFN0b3JlLmFkZCh7
J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRkKHsn
eCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQoeyd4
JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKK29iamVjdFN0b3JlLmFkZCh7J3gn
OiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRkKHsneCc6
IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQoeyd4Jzog
dGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKK29iamVjdFN0b3JlLmFkZCh7J3gnOiB0
ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRkKHsneCc6IHRl
c3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVz
dERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKK29iamVjdFN0b3JlLmFkZCh7J3gnOiB0ZXN0
RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3RE
YXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERh
dGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKK29iamVjdFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0
YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKQorb2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRh
W25leHRUb0FkZF19LCBuZXh0VG9BZGQpCitvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFb
bmV4dFRvQWRkXX0sIG5leHRUb0FkZCkKKworaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxs
LCB3ZWJraXRJREJDdXJzb3IuTkVYVCkKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IGlzIDAKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkKK1BBU1MgZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDMKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoMy4xNDE1OSkKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDQK
K2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDUKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMTIp
CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyA3CitldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKGRhdGUpCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSBpcyA5CitldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpCitQQVNTIGV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyAxMAorZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZShkYXRlKQorUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgMTEKK2V2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MScpCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSBpcyAxNAorZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQz
JykKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDE2CitldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHRVNUIHN0cmluZycpCitQQVNTIGV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSBpcyAxNworZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgn
dGhlIEJJR0VTVCBzdHJpbmcnKQorUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIG51bGwKKwor
aW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCB3ZWJraXRJREJDdXJzb3IuUFJFVikKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDE3CitldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCdBIGJpdDInKQorUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkgaXMgMTUKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpCitQQVNTIGV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSBpcyAxNAorZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZShkYXRlKQorUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkgaXMgMTAK
K2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoZGF0ZSkKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IGlzIDkKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDIKK2V2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoMSkKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIDEK
K2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5wcmltYXJ5S2V5IGlzIDAKK2V2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkKK1BBU1Mg
ZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItY29udGludWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDIzNGNlZTVkZTVhMzVjYmJk
NTZjNjMzMmJlNjM4MzU2OWMzODczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTAsMCArMSwxOTEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+IAorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJDdXJzb3IuY29udGlu
dWUoKSB3aXRoIGEga2V5IHBhcmFtZXRlci4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIg
ZGF0ZSA9IG5ldyBEYXRlKCk7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29y
dGVkIGJ5IEluZGV4ZWREQi4KK3dpbmRvdy50ZXN0RGF0YSA9IFsKKyAgICAwLAorICAgIDEsCisg
ICAgMSwKKyAgICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgMTEsCisgICAg
MTIsCisgICAgMTMsCisgICAgZGF0ZSwKKyAgICBkYXRlLAorICAgIG5ldyBEYXRlKGRhdGUudmFs
dWVPZigpICsgMTAwMCksCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEgYmlnIHN0cmluZyIs
CisgICAgIkEgYml0MSIsCisgICAgIkEgYml0MiIsCisgICAgIkEgYml0MyIsCisgICAgInRoZSBC
SUdFU1Qgc3RyaW5nIgorXTsKKyAKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCit7CisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ2N1cnNvci1jb250aW51ZScp
Iik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKyAKK2Z1bmN0aW9uIHNldFZlcnNpb24o
KQoreworICAgIHdpbmRvdy5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCit7CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB3aW5kb3cub2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICB3
aW5kb3cuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
c29tZUluZGV4JywgJ3gnKSIpOworICAgIHdpbmRvdy5uZXh0VG9BZGQgPSAwOworICAgIGFkZERh
dGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQp
Iik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrd2luZG93Lm5leHRUb0FkZCA8IHRlc3REYXRh
Lmxlbmd0aCA/IGFkZERhdGEgOiBhc2NlbmRpbmdUZXN0OworICAgIHJlc3VsdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ1Rlc3QoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2Jq
ZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgd2Via2l0SURCQ3Vyc29yLk5FWFQpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhc2NlbmRpbmdDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB3aW5kb3cuc3RhZ2UgPSAwOworfQorCitm
dW5jdGlvbiBhc2NlbmRpbmdDYWxsYmFjaygpCisKK3sKKyAgICAvLyBPT1BTOiBEb24ndCBsYW5k
LiBIYWNrLgorICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ICYmICEoJ3ByaW1hcnlLZXknIGlu
IGV2ZW50LnRhcmdldC5yZXN1bHQpKQorICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkgPSBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlOworCisgICAgaWYgKHdpbmRvdy5zdGFn
ZSA9PSAwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMCIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKDMuMTQxNTkpIik7CisgICAgfSBlbHNlIGlmICh3aW5kb3cuc3RhZ2UgPT0gMSkgeworICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjMiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIp
OworICAgIH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09IDIpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKKyAgICB9IGVsc2Ug
aWYgKHdpbmRvdy5zdGFnZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDEyKSIpOworICAgIH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09
IDQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICI3Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
ZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5zdGFnZSA9PSA1KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOworICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7CisgICAgfSBl
bHNlIGlmICh3aW5kb3cuc3RhZ2UgPT0gNikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5z
dGFnZSA9PSA3KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTEiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgnQSBiaXQxJykiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5zdGFnZSA9PSA4KSB7
CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBi
aXQzJykiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5zdGFnZSA9PSA5KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTYiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgndGhlIEJJR0VTVCBzdHJp
bmcnKSIpOworICAgIH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09IDEwKSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgndGhlIEJJR0VTVCBzdHJp
bmcnKSIpOworICAgIH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09IDExKSB7CisgICAgICAgIHNo
b3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBkZXNjZW5kaW5nVGVz
dCgpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
SWxsZWdhbCBzdGFnZS4iKTsKKyAgICB9CisgICAgd2luZG93LnN0YWdlKys7Cit9CisKK2Z1bmN0
aW9uIGRlc2NlbmRpbmdUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIHdlYmtpdElEQkN1
cnNvci5QUkVWKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVzY2VuZGluZ0NhbGxiYWNr
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHdp
bmRvdy5zdGFnZSA9IDA7Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRpbmdDYWxsYmFjaygpCit7Cisg
ICAgLy8gT09QUzogRG9uJ3QgbGFuZC4gSGFjay4KKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3Vs
dCAmJiAhKCdwcmltYXJ5S2V5JyBpbiBldmVudC50YXJnZXQucmVzdWx0KSkKKyAgICAgICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZTsK
KworICAgIGlmICh3aW5kb3cuc3RhZ2UgPT0gMCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAgfSBlbHNlIGlmICh3
aW5kb3cuc3RhZ2UgPT0gMSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5wcmltYXJ5S2V5IiwgIjE1Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAgfSBlbHNlIGlmICh3aW5kb3cuc3RhZ2Ug
PT0gMikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE0Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5zdGFnZSA9PSAzKSB7CisgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTAiKTsKKyAgICAg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOworICAg
IH0gZWxzZSBpZiAod2luZG93LnN0YWdlID09IDQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5z
dGFnZSA9PSA1KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMiIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNv
bnRpbnVlKDEpIik7CisgICAgfSBlbHNlIGlmICh3aW5kb3cuc3RhZ2UgPT0gNikgeworICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEiKTsKKyAgICAg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxKSIpOworICAgIH0g
ZWxzZSBpZiAod2luZG93LnN0YWdlID09IDcpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkiKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5zdGFn
ZSA9PSA4KSB7CisgICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgIH0KKyAgICB3aW5kb3cuc3RhZ2UrKzsK
K30KKyAKK29wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworIAorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZjkyMWRlZDM5MDUxNjUwOTVjMGM1ODliOTU4YWE2MjFlMDExYzEwNS4uZDE1MjJhYWZj
YTYyMGViNjYzYmRhNDQzZWZjOTZhYzIyMzVkNDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDExLTAzLTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnNvci5jb250
aW51ZSB3aXRoIGEga2V5IHBhcmFtIHNob3VsZCB0ZXN0IGxlc3MgdGhhbiwgbm90IGVxdWFsIHRv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTY0MAor
CisgICAgICAgIElmIHlvdSBzdXBwbHkgYSBwYXJhbSB0byBjdXJzb3IuY29udGludWUsIHdlIHNv
dWxkIGd1YXJlbnRlZSB0aGF0CisgICAgICAgIHRoZSBpdGVtIHdlIGNvbnRpbnVlIHRvIGlzIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcGFyYW1ldGVyLgorICAgICAgICBSaWdodCBub3cs
IHdlIG9ubHkgdGVzdCBlcXVhbGl0eS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItY29udGludWUuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29u
dGludWVGdW5jdGlvbkludGVybmFsKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmlzTGVzc1RoYW4pOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5Ojppc0VxdWFsKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5oOgorCiAyMDExLTAz
LTAyICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAppbmRleCA0NTc2ZjZkYjgxNzY3ODQ1OTM4OTc4MmY0MzJlYzI0OTY4
NGUyZmNiLi43MTU1ZDIwYzA5NjI1ZGFlYzU1ZTY4MzNlMzc1ZWQ1M2U3NzlkZWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMTM0
LDkgKzEzNCwxNiBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9u
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgICAgICBpZiAoIWN1cnNv
ci0+Y3VycmVudFJvd0V4aXN0cygpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
Ly8gSWYgYSBrZXkgd2FzIHN1cHBsaWVkLCB3ZSBtdXN0IGxvb3AgdW50aWwgd2UgZmluZCB0aGF0
IGtleSAob3IgaGl0IHRoZSBlbmQpLgotICAgICAgICBpZiAoa2V5ICYmICFrZXktPmlzRXF1YWwo
Y3Vyc29yLT5tX2N1cnJlbnRLZXkuZ2V0KCkpKQotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIC8vIElmIGEga2V5IHdhcyBzdXBwbGllZCwgd2UgbXVzdCBsb29wIHVudGlsIHdlIGZpbmQg
YSBrZXkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0IChvciBoaXQgdGhlIGVuZCkuCisgICAg
ICAgIGlmIChrZXkpIHsKKyAgICAgICAgICAgIGlmIChjdXJzb3ItPm1fZGlyZWN0aW9uID09IElE
QkN1cnNvcjo6TkVYVCB8fCBjdXJzb3ItPm1fZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9O
T19EVVBMSUNBVEUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3Vyc29yLT5tX2N1cnJlbnRLZXkt
PmlzTGVzc1RoYW4oa2V5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChrZXktPmlzTGVzc1RoYW4o
Y3Vyc29yLT5tX2N1cnJlbnRLZXkuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIC8vIElmIHdlIGRvbid0IGhh
dmUgYSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQsIHdlIGNhbiBzdG9wIG5vdy4KICAgICAgICAgaWYg
KGN1cnNvci0+bV9kaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUIHx8IGN1cnNvci0+bV9kaXJl
Y3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuY3BwCmluZGV4
IDVmNDU1NDM3M2U3MmMzNjMyNTNjMmY2MmYyZThmODQxY2E0MDUwMjkuLjEyMDU3Y2FkOGY2Mzky
ZTYyMzY1YzNiMWQwNmVjZjgxYjE1NTkyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5jcHAK
QEAgLTU5LDcgKzU5LDMwIEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJLZXk6OmZyb21RdWVyeShT
UUxpdGVTdGF0ZW1lbnQmIHF1ZXJ5LCBpbnQgYmFzZUNvbHVtbikKICAgICByZXR1cm4gSURCS2V5
OjpjcmVhdGVOdWxsKCk7CiB9CiAKLWJvb2wgSURCS2V5Ojppc0VxdWFsKElEQktleSogb3RoZXIp
Citib29sIElEQktleTo6aXNMZXNzVGhhbihJREJLZXkqIG90aGVyKSBjb25zdAoreworICAgIEFT
U0VSVChvdGhlcik7CisgICAgaWYgKG90aGVyLT5tX3R5cGUgPCBtX3R5cGUpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChvdGhlci0+bV90eXBlID4gbV90eXBlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgU3RyaW5nVHlwZToK
KyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUob3RoZXItPm1fc3RyaW5nLCBtX3N0cmlu
ZykgPiAwOworICAgIGNhc2UgRGF0ZVR5cGU6CisgICAgICAgIHJldHVybiBvdGhlci0+bV9kYXRl
ID4gbV9kYXRlOworICAgIGNhc2UgTnVtYmVyVHlwZToKKyAgICAgICAgcmV0dXJuIG90aGVyLT5t
X251bWJlciA+IG1fbnVtYmVyOworICAgIGNhc2UgTnVsbFR5cGU6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBJREJLZXk6OmlzRXF1YWwoSURCS2V5KiBvdGhlcikgY29uc3QKIHsKICAg
ICBpZiAoIW90aGVyIHx8IG90aGVyLT5tX3R5cGUgIT0gbV90eXBlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuaAppbmRleCA5MTE4NzQzZmM0ZjM3MWM5NWIwYWJk
MTFjNDI3OTBlN2Y2YjMwOTZlLi5hNjVkMmQ1NGI4ZmY0NThiNTA3MTQ2ZGQ5OWQ1NmZhYTIxMjVl
YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmgKQEAgLTEwMSw3ICsxMDEsOCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZyb21RdWVyeShTUUxpdGVTdGF0ZW1l
bnQmIHF1ZXJ5LCBpbnQgYmFzZUNvbHVtbik7CiAKLSAgICBib29sIGlzRXF1YWwoSURCS2V5KiBv
dGhlcik7CisgICAgYm9vbCBpc0xlc3NUaGFuKElEQktleSogb3RoZXIpIGNvbnN0OworICAgIGJv
b2wgaXNFcXVhbChJREJLZXkqIG90aGVyKSBjb25zdDsKICAgICBTdHJpbmcgd2hlcmVTeW50YXgo
U3RyaW5nIHF1YWxpZmllZFRhYmxlTmFtZSA9ICIiKSBjb25zdDsKICAgICBTdHJpbmcgbG93ZXJD
dXJzb3JXaGVyZUZyYWdtZW50KFN0cmluZyBjb21wYXJpc29uT3BlcmF0b3IsIFN0cmluZyBxdWFs
aWZpZWRUYWJsZU5hbWUgPSAiIik7CiAgICAgU3RyaW5nIHVwcGVyQ3Vyc29yV2hlcmVGcmFnbWVu
dChTdHJpbmcgY29tcGFyaXNvbk9wZXJhdG9yLCBTdHJpbmcgcXVhbGlmaWVkVGFibGVOYW1lID0g
IiIpOwo=
</data>
<flag name="review"
          id="76489"
          type_id="1"
          status="+"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>