<?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>107651</bug_id>
          
          <creation_ts>2013-01-23 02:03:32 -0800</creation_ts>
          <short_desc>Add an API for retrieving native memory information without going through the remote inspecting protocol</short_desc>
          <delta_ts>2013-01-28 00:55:23 -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>Web Inspector (Deprecated)</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>
          <dependson>107938</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814018</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-23 02:03:32 -0800</bug_when>
    <thetext>We&apos;d like to retrieve native memory information collected by the Developer tools via a WebKit API. The information we&apos;d like to get is similar to what the native memory snapshot in Developer tools has (category name - amount of memory pairs).

Possible use cases in Chrome:
- memory tests
- about:mem-internals page we&apos;re going to create ( crbug.com/168642 )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814142</commentid>
    <comment_count>1</comment_count>
      <attachid>184212</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-23 05:59:31 -0800</bug_when>
    <thetext>Created attachment 184212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814148</commentid>
    <comment_count>2</comment_count>
      <attachid>184212</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-01-23 06:17:19 -0800</bug_when>
    <thetext>Comment on attachment 184212
Patch

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

Consider adding a sanity unit test for this under Source/WebKit/chromium/tests/

&gt; Source/WebCore/inspector/InspectorMemoryAgent.h:66
&gt; +    void getProcessMemoryDistributionAsMap(const bool* reportGraph, RefPtr&lt;InspectorObject&gt;&amp; graph, HashMap&lt;String, size_t&gt;* memoryInfo);

You should change reportGraph to a bool, it is &quot;const bool*&quot; just to support optional parameters parsed by the generated protocol messages dispatcher. If you don&apos;t need to expose the graph to WebKit you could convert &quot;RefPtr&lt;InspectorObject&gt;&amp; graph&quot; to &quot;RefPtr&lt;InspectorObject&gt;* graph&quot; and just pass 0.

&gt; Source/WebKit/chromium/public/WebView.h:381
&gt; +    virtual WebVector&lt;std::pair&lt;WebString, size_t&gt; &gt; getProcessMemoryDistribution() const = 0;

WebView may not be the best place for this, it should probably go to WebDevToolsAgent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814228</commentid>
    <comment_count>3</comment_count>
      <attachid>184242</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-23 08:22:53 -0800</bug_when>
    <thetext>Created attachment 184242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814336</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 10:35:13 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815443</commentid>
    <comment_count>5</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-24 07:16:23 -0800</bug_when>
    <thetext>abarth@, could you have a look at the API additions, if they&apos;re acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816173</commentid>
    <comment_count>6</comment_count>
      <attachid>184242</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-24 21:19:01 -0800</bug_when>
    <thetext>Comment on attachment 184242
Patch

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

&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:80
&gt; +    virtual WebVector&lt;std::pair&lt;WebString, size_t&gt; &gt; getProcessMemoryDistribution() const = 0;

Does this std::pair represent some sort of object?  Should we use a struct or a class in place of a std::pair?

&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:106
&gt; +

This change looks spurious.

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:645
&gt; +WebVector&lt;std::pair&lt;WebString, size_t&gt; &gt; WebDevToolsAgentImpl::getProcessMemoryDistribution() const
&gt; +{
&gt; +    HashMap&lt;String, size_t&gt; memoryInfo = m_webViewImpl-&gt;page()-&gt;inspectorController()-&gt;getProcessMemoryDistribution();
&gt; +    WebVector&lt;std::pair&lt;WebString, size_t&gt; &gt; memoryInfoVector((size_t)memoryInfo.size());
&gt; +    size_t i = 0;
&gt; +    for (HashMap&lt;String, size_t&gt;::const_iterator it = memoryInfo.begin(); it != memoryInfo.end(); ++it)
&gt; +        memoryInfoVector[i++] = std::make_pair(it-&gt;key, it-&gt;value);
&gt; +    return memoryInfoVector;
&gt; +}

This looks really inefficient.  Should we return an object that lets you query the map instead?  I guess it depends on how you plan to use this data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816388</commentid>
    <comment_count>7</comment_count>
      <attachid>184701</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 01:51:11 -0800</bug_when>
    <thetext>Created attachment 184701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816458</commentid>
    <comment_count>8</comment_count>
      <attachid>184701</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-01-25 03:47:00 -0800</bug_when>
    <thetext>Comment on attachment 184701
Patch

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

Can you do InspectorMemoryAgent refactorings in a separate change?

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:88
&gt; +        m_sizesMap = sizesMap;

m_sizesMap should be a pointer or a reference, otherwise passed sizesMap will remain unchanged.

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:645
&gt; +    return memoryInfoVector;

You can pass reference to WebVector&lt;WebMemoryUsageInfo&gt; as a parameter to avoid potential extra copies, the same for hash map returned by getProcessMemoryDistribution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816479</commentid>
    <comment_count>9</comment_count>
      <attachid>184701</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 04:36:59 -0800</bug_when>
    <thetext>Comment on attachment 184701
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:88
&gt;&gt; +        m_sizesMap = sizesMap;
&gt; 
&gt; m_sizesMap should be a pointer or a reference, otherwise passed sizesMap will remain unchanged.

Offline discussion: That&apos;s how it was before this patch, not going to change it.

&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:645
&gt;&gt; +    return memoryInfoVector;
&gt; 
&gt; You can pass reference to WebVector&lt;WebMemoryUsageInfo&gt; as a parameter to avoid potential extra copies, the same for hash map returned by getProcessMemoryDistribution.

Offline discussion: not going to change this, other API funcs return WebVectors, too, let&apos;s be consistent...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816481</commentid>
    <comment_count>10</comment_count>
      <attachid>184242</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 04:37:18 -0800</bug_when>
    <thetext>Comment on attachment 184242
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:80
&gt;&gt; +    virtual WebVector&lt;std::pair&lt;WebString, size_t&gt; &gt; getProcessMemoryDistribution() const = 0;
&gt; 
&gt; Does this std::pair represent some sort of object?  Should we use a struct or a class in place of a std::pair?

I added a struct for this.

&gt;&gt; Source/WebKit/chromium/public/WebDevToolsAgent.h:106
&gt;&gt; +
&gt; 
&gt; This change looks spurious.

Fixed

&gt;&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:645
&gt;&gt; +}
&gt; 
&gt; This looks really inefficient.  Should we return an object that lets you query the map instead?  I guess it depends on how you plan to use this data.

The keys are arbitrary (and can change as the dev tools add new metrics). So it wouldn&apos;t make sense to create a wrapper object with fixed accessors like CSSMemory(), PageMemory() and so on.

Typical usage for this: E.g., in the memory tests, we&apos;d loop through all the keys, and just input them to as data points to some entity which keeps track of memory metrics.

Returning a std::map would also be okay, but it doesn&apos;t look like any of the API functions return maps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816487</commentid>
    <comment_count>11</comment_count>
      <attachid>184701</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-01-25 04:40:46 -0800</bug_when>
    <thetext>Comment on attachment 184701
Patch

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

&gt; Source/WebCore/inspector/InspectorController.cpp:438
&gt; +HashMap&lt;String, size_t&gt; InspectorController::getProcessMemoryDistribution() const

style: getProcessMemoryDistribution-&gt;processMemoryDistribution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816496</commentid>
    <comment_count>12</comment_count>
      <attachid>184728</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 05:04:05 -0800</bug_when>
    <thetext>Created attachment 184728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816497</commentid>
    <comment_count>13</comment_count>
      <attachid>184729</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 05:04:56 -0800</bug_when>
    <thetext>Created attachment 184729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816583</commentid>
    <comment_count>14</comment_count>
      <attachid>184749</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 07:31:06 -0800</bug_when>
    <thetext>Created attachment 184749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816584</commentid>
    <comment_count>15</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-01-25 07:32:13 -0800</bug_when>
    <thetext>I split out the dev tools refactoring parts, and committed them separately.

abarth@: can you have a look at the new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817057</commentid>
    <comment_count>16</comment_count>
      <attachid>184749</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-25 17:00:14 -0800</bug_when>
    <thetext>Comment on attachment 184749
Patch

ok.  Thanks for making an object instead of using a std::pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817576</commentid>
    <comment_count>17</comment_count>
      <attachid>184749</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 00:55:18 -0800</bug_when>
    <thetext>Comment on attachment 184749
Patch

Clearing flags on attachment: 184749

Committed r140951: &lt;http://trac.webkit.org/changeset/140951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817577</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 00:55:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184212</attachid>
            <date>2013-01-23 05:59:31 -0800</date>
            <delta_ts>2013-01-23 08:22:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130123145624.patch</filename>
            <type>text/plain</type>
            <size>14955</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUxNDFiOGU3NGExNzM1
MTliNTk5ZDFjNWM2YTNlZGM3YTY0Nzg3Zi4uYjIyM2NmOTQ1YWQwYmQ4YTdkMWYzZWI5MGEzYjg0
NTY1NjRmYWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTIzICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gQVBJIGZv
ciByZXRyaWV2aW5nIG5hdGl2ZSBtZW1vcnkgaW5mb3JtYXRpb24gd2l0aG91dCBnb2luZyB0aHJv
dWdoIHRoZSByZW1vdGUgaW5zcGVjdGluZyBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ29udHJvbGxl
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8pOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1v
cnlEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFn
ZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXApOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yTWVtb3J5QWdl
bnQpOgorCiAyMDEzLTAxLTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogT3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9l
c24ndCBXb3JrIHRoZSBGaXJzdCBUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVk
MTc4Y2QyYWJjMzllMzA0YmFkNjA2ZTA1MmM4OTg1NTc4NTU5ZDkuLjM2N2ExY2M4N2RkZjk0ZGU2
NTlhMjNjZmFmYTBjNDJlMDE0YTgyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTMtMDEtMjMgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZCBhbiBBUEkgZm9yIHJldHJpZXZpbmcgbmF0aXZlIG1lbW9yeSBp
bmZvcm1hdGlvbiB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHJlbW90ZSBpbnNwZWN0aW5nIHBy
b3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc2NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2V0UHJvY2Vzc01l
bW9yeURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEzLTAxLTExICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3Ig
W2Nocm9taXVtXTogdG9vbGJhciBib3JkZXIgaXMgbWlzc2luZyBvbiBub24tTWFjIGluIGRvY2tl
ZC10by1ib3R0b20gbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IGRjMmI1Y2QyYWUxMDdhMGEzNmVjMGVlYjRjZDY2MWUxYzQy
MzBhMjUuLjEyZWIzZDg4MDMyZGFkYjJhODhhZDBiZjdlMjEzMjA5MDgyNmUyZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEx
OCw3ICsxMTgsMTEgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQ
YWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBPd25QdHI8SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
KSk7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBkb21T
dG9yYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRvbVN0b3JhZ2VBZ2Vu
dFB0ci5yZWxlYXNlKCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50LCBt
X3N0YXRlLmdldCgpLCBtX3BhZ2UpKTsKKworICAgIE93blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2Vu
dD4gbWVtb3J5QWdlbnRQdHIoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIGluc3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdl
KSk7CisgICAgbV9tZW1vcnlBZ2VudCA9IG1lbW9yeUFnZW50UHRyLmdldCgpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtZW1vcnlBZ2VudFB0ci5yZWxlYXNlKCkpOworCiAgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIHBhZ2VBZ2VudCwgbV9zdGF0ZS5nZXQoKSwgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
UGFnZUluc3BlY3RvciwKICAgICAgICBpbnNwZWN0b3JDbGllbnQpKTsKICAgICBtX2FnZW50cy5h
cHBlbmQoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQpKTsKQEAgLTQzMSw2ICs0
MzUsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRQcm9jZXNzVGFzaygpCiAjZW5k
aWYKIH0KIAorSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0
UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0Cit7CisgICAgSGFzaE1hcDxTdHJpbmcs
IHNpemVfdD4gbWVtb3J5SW5mbzsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBncmFwaDsK
KyAgICBtX21lbW9yeUFnZW50LT5nZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXAoMCwg
Z3JhcGgsICZtZW1vcnlJbmZvKTsKKyAgICByZXR1cm4gbWVtb3J5SW5mbzsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGNjZmFkYTI0
MTdjZTc5OGYyYzg2YTMwYzI4MTBkODczYzZlYWNkNDUuLjhkMzNjNWY4YjY2MTU3YTIyOTc5ZDNh
ODE2YjYzZWI1NGU4OGYxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKK2NsYXNzIEluc3BlY3Rv
ck1lbW9yeUFnZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3BlY3RvclBh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ7CkBAIC0xMjMsNiArMTI0LDgg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbFByb2Nlc3NUYXNrKCk7CiAgICAgdm9pZCBkaWRQcm9j
ZXNzVGFzaygpOwogCisgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gZ2V0UHJvY2Vzc01lbW9y
eURpc3RyaWJ1dGlvbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIoUGFnZSosIEluc3BlY3RvckNsaWVudCopOwogCkBAIC0xMzgsNiArMTQxLDcgQEAgcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudDsKICAgICBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiBtX3Jlc291cmNlQWdlbnQ7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3Bh
Z2VBZ2VudDsKKyAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbV9tZW1vcnlBZ2VudDsKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBt
X2RlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21EZWJ1
Z2dlckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAKaW5kZXggMzIyOTJjOGQ1YjgwOWQwMzhmNWI1YWFkNzEwM2Y2M2I1MWZhNDlj
My4uMDdjYjZlN2RhYWVkMmU5NjYwYThlNWNiMTI3OWJlZjVkYTdiYWNjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC04MSwx
MSArODEsMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRv
ciB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvcihNZW1vcnlJbnN0cnVt
ZW50YXRpb25DbGllbnRJbXBsKiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7IH0KKyAgICBN
ZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yKCkgeyB9CiAKLSAgICB2b2lkIGR1bXAoSW5zcGVjdG9y
TWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKKyAgICB2b2lkIGR1bXAoY29uc3QgVHlwZU5hbWVUb1Np
emVNYXAmIHNpemVzTWFwLCBJbnNwZWN0b3JNZW1vcnlCbG9ja3MqIGNoaWxkcmVuKQogICAgIHsK
LSAgICAgICAgbV9zaXplc01hcCA9IG1fY2xpZW50LT5zaXplc01hcCgpOworICAgICAgICBtX3Np
emVzTWFwID0gc2l6ZXNNYXA7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIGZpbHRlciBvdXQgUmVu
ZGVyaW5nIHR5cGUgYmVjYXVzZSB0aGUgY292ZXJhZ2UgaXMgbm90IGdvb2QgZW5vdWdoIGF0IHRo
ZSBtb21lbnQKICAgICAgICAgLy8gYW5kIHJlcG9ydCBSZW5kZXJBcmVuYSBzaXplIGluc3RlYWQu
CkBAIC0xMDksNyArMTA5LDYgQEAgcHVibGljOgogICAgICAgICB3aGlsZSAoaW5kZXggPCBvYmpl
Y3RUeXBlcy5zaXplKCkpCiAgICAgICAgICAgICBpbmRleCA9IGJ1aWxkT2JqZWN0Rm9ySW5kZXgo
aW5kZXgsIG9iamVjdFR5cGVzLCBjaGlsZHJlbik7CiAKLSAgICAgICAgYWRkTWVtb3J5SW5zdHJ1
bWVudGF0aW9uRGVidWdEYXRhKGNoaWxkcmVuKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNDcs
MjEgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBpbmRleDsKICAgICB9CiAKLSAg
ICB2b2lkIGFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRlYnVnRGF0YShJbnNwZWN0b3JNZW1vcnlC
bG9ja3MqIGNoaWxkcmVuKQotICAgIHsKLSAgICAgICAgaWYgKG1fY2xpZW50LT5jaGVja0luc3Ry
dW1lbnRlZE9iamVjdHMoKSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiB0b3RhbEluc3RydW1lbnRlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5z
ZXROYW1lKCJJbnN0cnVtZW50ZWRPYmplY3RzQ291bnQiKTsKLSAgICAgICAgICAgIHRvdGFsSW5z
dHJ1bWVudGVkLT5zZXRTaXplKG1fY2xpZW50LT50b3RhbENvdW50ZWRPYmplY3RzKCkpOwotCi0g
ICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGluY29ycmVjdGx5SW5zdHJ1
bWVudGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoIkluc3RydW1l
bnRlZEJ1dE5vdEFsbG9jYXRlZE9iamVjdHNDb3VudCIpOwotICAgICAgICAgICAgaW5jb3JyZWN0
bHlJbnN0cnVtZW50ZWQtPnNldFNpemUobV9jbGllbnQtPnRvdGFsT2JqZWN0c05vdEluQWxsb2Nh
dGVkU2V0KCkpOwotCi0gICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbSh0b3RhbEluc3RydW1l
bnRlZCk7Ci0gICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShpbmNvcnJlY3RseUluc3RydW1l
bnRlZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsKiBtX2NsaWVudDsKICAgICBUeXBlTmFtZVRvU2l6ZU1hcCBtX3NpemVzTWFwOwogfTsK
IApAQCAtNTI1LDE5ICs1MDksNTAgQEAgc3RhdGljIHZvaWQgY29sbGVjdERvbVRyZWVJbmZvKE1l
bW9yeUluc3RydW1lbnRhdGlvbkltcGwmIG1lbW9yeUluc3RydW1lbnRhdGlvbiwKICAgICBkb21U
cmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5Q2FjaGUoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkUGxh
dGZvcm1Db21wb25lbnRzSW5mbyhQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hp
bGRyZW4pCitzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKFR5cGVOYW1lVG9T
aXplTWFwKiBtZW1vcnlJbmZvKQogewogICAgIFZlY3RvcjxNZW1vcnlVc2FnZVN1cHBvcnQ6OkNv
bXBvbmVudEluZm8+IGNvbXBvbmVudHM7CiAgICAgTWVtb3J5VXNhZ2VTdXBwb3J0OjptZW1vcnlV
c2FnZUJ5Q29tcG9uZW50cyhjb21wb25lbnRzKTsKLSAgICBmb3IgKFZlY3RvcjxNZW1vcnlVc2Fn
ZVN1cHBvcnQ6OkNvbXBvbmVudEluZm8+OjppdGVyYXRvciBpdCA9IGNvbXBvbmVudHMuYmVnaW4o
KTsgaXQgIT0gY29tcG9uZW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNl
dE5hbWUoaXQtPm1fbmFtZSk7Ci0gICAgICAgIGJsb2NrLT5zZXRTaXplKGl0LT5tX3NpemVJbkJ5
dGVzKTsKLSAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYmxvY2spOworICAgIGZvciAoVmVjdG9y
PE1lbW9yeVVzYWdlU3VwcG9ydDo6Q29tcG9uZW50SW5mbz46Oml0ZXJhdG9yIGl0ID0gY29tcG9u
ZW50cy5iZWdpbigpOyBpdCAhPSBjb21wb25lbnRzLmVuZCgpOyArK2l0KQorICAgICAgICBtZW1v
cnlJbmZvLT5hZGQoaXQtPm1fbmFtZSwgaXQtPm1fc2l6ZUluQnl0ZXMpOworfQorCitzdGF0aWMg
dm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50SW1wbCogY2xpZW50LCBUeXBlTmFtZVRvU2l6ZU1hcCogbWVtb3J5SW5mbykKK3sK
KyAgICBpZiAoY2xpZW50LT5jaGVja0luc3RydW1lbnRlZE9iamVjdHMoKSkgeworICAgICAgICBt
ZW1vcnlJbmZvLT5hZGQoIkluc3RydW1lbnRlZE9iamVjdHNDb3VudCIsIGNsaWVudC0+dG90YWxD
b3VudGVkT2JqZWN0cygpKTsKKyAgICAgICAgbWVtb3J5SW5mby0+YWRkKCJJbnN0cnVtZW50ZWRC
dXROb3RBbGxvY2F0ZWRPYmplY3RzQ291bnQiLCBjbGllbnQtPnRvdGFsT2JqZWN0c05vdEluQWxs
b2NhdGVkU2V0KCkpOwogICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0
UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIHJlcG9y
dEdyYXBoLCBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+JiBwcm9jZXNzTWVtb3J5LCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgZ3JhcGgpCiB7CisgICAgVHlwZU5hbWVUb1NpemVNYXAgbWVt
b3J5SW5mbzsKKyAgICBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXAocmVwb3J0R3Jh
cGgsIGdyYXBoLCAmbWVtb3J5SW5mbyk7CisKKyAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9y
IHN0YXRzR2VuZXJhdG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxk
cmVuID0gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOjpjcmVhdGUoKTsKKyAgICBzdGF0c0dlbmVyYXRv
ci5kdW1wKG1lbW9yeUluZm8sIGNoaWxkcmVuLmdldCgpKTsKKworICAgIHByb2Nlc3NNZW1vcnkg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlw
ZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKKyAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CisKKyAgICBzaXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKKyAgICBzaXplX3Qg
c2hhcmVkQnl0ZXMgPSAwOworICAgIE1lbW9yeVVzYWdlU3VwcG9ydDo6cHJvY2Vzc01lbW9yeVNp
emVzSW5CeXRlcygmcHJpdmF0ZUJ5dGVzLCAmc2hhcmVkQnl0ZXMpOworICAgIHByb2Nlc3NNZW1v
cnktPnNldFNpemUocHJpdmF0ZUJ5dGVzKTsKK30KKwordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3Rvcik7CisgICAgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3Rvck1lbW9yeUFnZW50Pjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2luc3BlY3RvckNsaWVudCk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9wYWdlKTsKK30KKwordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0
UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFwKGNvbnN0IGJvb2wqIHJlcG9ydEdyYXBoLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZ3JhcGgsIFR5cGVOYW1lVG9TaXplTWFwKiBtZW1vcnlJ
bmZvKQorewogICAgIE93blB0cjxIZWFwR3JhcGhTZXJpYWxpemVyPiBncmFwaFNlcmlhbGl6ZXI7
CiAgICAgaWYgKHJlcG9ydEdyYXBoICYmICpyZXBvcnRHcmFwaCkKICAgICAgICAgZ3JhcGhTZXJp
YWxpemVyID0gYWRvcHRQdHIobmV3IEhlYXBHcmFwaFNlcmlhbGl6ZXIoKSk7CkBAIC01NTIsOSAr
NTY3LDYgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3Ry
aWJ1dGlvbihFcnJvclN0cmluZyosIGNvbnN0IGJvb2wKICAgICBQbGF0Zm9ybU1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6cmVwb3J0U3RhdGljTWVtYmVyc01lbW9yeVVzYWdlKCZtZW1vcnlJbnN0cnVt
ZW50YXRpb24pOwogICAgIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0YXRp
Y01lbWJlcnNNZW1vcnlVc2FnZSgmbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKIAotICAgIFJlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuID0gSW5zcGVjdG9yTWVtb3J5QmxvY2tz
OjpjcmVhdGUoKTsKLSAgICBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKGNoaWxkcmVuKTsKLQog
ICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KHRoaXMpOwogICAgIG1lbW9y
eUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbik7CiAg
ICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QobWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50KTsKQEAgLTU2NSwyNCArNTc3LDkgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIGNvbnN0IGJvb2wK
IAogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kdW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyht
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRlZE9iamVjdHMoKSk7CiAKLSAgICBNZW1v
cnlVc2FnZVN0YXRzR2VuZXJhdG9yIHN0YXRzR2VuZXJhdG9yKCZtZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnQpOwotICAgIHN0YXRzR2VuZXJhdG9yLmR1bXAoY2hpbGRyZW4uZ2V0KCkpOwotCi0g
ICAgcHJvY2Vzc01lbW9yeSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1l
KFdlYkNvcmVNZW1vcnlUeXBlczo6UHJvY2Vzc1ByaXZhdGVNZW1vcnkpOwotICAgIHByb2Nlc3NN
ZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKLQotICAgIHNpemVfdCBwcml2YXRlQnl0ZXMg
PSAwOwotICAgIHNpemVfdCBzaGFyZWRCeXRlcyA9IDA7Ci0gICAgTWVtb3J5VXNhZ2VTdXBwb3J0
Ojpwcm9jZXNzTWVtb3J5U2l6ZXNJbkJ5dGVzKCZwcml2YXRlQnl0ZXMsICZzaGFyZWRCeXRlcyk7
Ci0gICAgcHJvY2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMpOwotfQotCi12b2lkIElu
c3BlY3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsKLSAgICBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1faW5zcGVjdG9y
Q2xpZW50KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworICAgICptZW1vcnlJbmZvID0g
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LnNpemVzTWFwKCk7CisgICAgYWRkUGxhdGZvcm1D
b21wb25lbnRzSW5mbyhtZW1vcnlJbmZvKTsKKyAgICBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25E
ZWJ1Z0RhdGEoJm1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCwgbWVtb3J5SW5mbyk7CiB9CiAK
IEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5z
cGVjdG9yQ29tcG9zaXRlU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCAxNDdjZmRhMzA4ZmQw
MWU1ZjI1YThhMjlkNWY1N2YxNWY3NGFlOTRlLi44MDdlM2YwY2M4ZmMwODVhOTI1ZTUxYWMzMWU2
NWNhODliMzU3OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgdm9p
ZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXAoY29uc3QgYm9vbCogcmVwb3J0R3Jh
cGgsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBncmFwaCwgSGFzaE1hcDxTdHJpbmcsIHNpemVf
dD4qIG1lbW9yeUluZm8pOworCiBwcml2YXRlOgogICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZSosIFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmlu
ZGV4IDQ0OTVhNDQ5M2ViMjM1ZjI5NjMxOTIyOTM0NjY4MzJhMjFkNjA0NWIuLjM0ZjkzZTJkZTEw
NjllNDFjYzhkNTdkYzczMzU3YTRkYjdkY2M3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJT
dHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKIAorI2luY2x1ZGUgPHV0
aWxpdHk+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OwpAQCAtMzc2LDYgKzM3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBiZSBzZXQgb25jZSBwZXIg
V2ViVmlldy4KICAgICB2aXJ0dWFsIFdlYkRldlRvb2xzQWdlbnQqIGRldlRvb2xzQWdlbnQoKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxzdGQ6OnBhaXI8V2ViU3RyaW5nLCBzaXplX3Q+
ID4gZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0ID0gMDsKIAogICAgIC8vIEFj
Y2Vzc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggZjMyYzVmNjE5NTlmMDQ2YzQwYTFiMWQwMjFmYmE5NDFhN2E3OTk4MC4uMmNmYzQ1YzYz
ZGE4YjgxOTliNWEwZTBhMDdjNmFlNThjMDJhZWYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzQ0MSw2ICszNDQxLDE2IEBAIFdlYkRldlRvb2xz
QWdlbnQqIFdlYlZpZXdJbXBsOjpkZXZUb29sc0FnZW50KCkKICAgICByZXR1cm4gbV9kZXZUb29s
c0FnZW50LmdldCgpOwogfQogCitXZWJWZWN0b3I8c3RkOjpwYWlyPFdlYlN0cmluZywgc2l6ZV90
PiA+V2ViVmlld0ltcGw6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdAorewor
ICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IG1lbW9yeUluZm8gPSBtX3BhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpOworICAgIFdlYlZl
Y3RvcjxzdGQ6OnBhaXI8V2ViU3RyaW5nLCBzaXplX3Q+ID4gbWVtb3J5SW5mb1ZlY3Rvcigoc2l6
ZV90KW1lbW9yeUluZm8uc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChIYXNo
TWFwPFN0cmluZywgc2l6ZV90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtZW1vcnlJbmZvLmJlZ2lu
KCk7IGl0ICE9IG1lbW9yeUluZm8uZW5kKCk7ICsraXQpCisgICAgICAgIG1lbW9yeUluZm9WZWN0
b3JbaSsrXSA9IHN0ZDo6bWFrZV9wYWlyKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgcmV0dXJu
IG1lbW9yeUluZm9WZWN0b3I7Cit9CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgV2ViVmlld0lt
cGw6OmFjY2Vzc2liaWxpdHlPYmplY3QoKQogewogICAgIGlmICghbWFpbkZyYW1lSW1wbCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggYzMwOGQ3NTI1ODRj
NjkxN2Q5NzYwZGEzNDQ2YjU1NDNkMTdhNjRkMi4uY2VkOGY4NWIxNDFmYTg5M2QxZTBhNDJkOTg0
NjA5MWMyODI1OTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC0yODcsNiArMjg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0
b3JTZXR0aW5nKGNvbnN0IFdlYlN0cmluZyYga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgV2ViRGV2
VG9vbHNBZ2VudCogZGV2VG9vbHNBZ2VudCgpOworICAgIHZpcnR1YWwgV2ViVmVjdG9yPHN0ZDo6
cGFpcjxXZWJTdHJpbmcsIHNpemVfdD4gPiBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlP
YmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAogICAg
ICAgICBjb25zdCBXZWJOb2RlJiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184242</attachid>
            <date>2013-01-23 08:22:53 -0800</date>
            <delta_ts>2013-01-25 04:37:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130123171945.patch</filename>
            <type>text/plain</type>
            <size>15565</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUxNDFiOGU3NGExNzM1
MTliNTk5ZDFjNWM2YTNlZGM3YTY0Nzg3Zi4uMWNmYzhlNTFmNzJkMTU1YzdjOTIxYzljZTAwYmRk
OGJkZTExMjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTIzICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gQVBJIGZv
ciByZXRyaWV2aW5nIG5hdGl2ZSBtZW1vcnkgaW5mb3JtYXRpb24gd2l0aG91dCBnb2luZyB0aHJv
dWdoIHRoZSByZW1vdGUgaW5zcGVjdGluZyBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ29udHJvbGxl
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8pOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1v
cnlEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OnJlcG9ydE1lbW9yeVVzYWdlKTogKGRpZmZpbmcgYXJ0aWZhY3QpCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFw
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAg
KEluc3BlY3Rvck1lbW9yeUFnZW50KToKKwogMjAxMy0wMS0xMSAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE9wdGlvbitDbGljayBv
biBOb2RlIEV4cGFuZGVyIERvZXNuJ3QgV29yayB0aGUgRmlyc3QgVGltZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA1ZDE3OGNkMmFiYzM5ZTMwNGJhZDYwNmUwNTJjODk4NTU3ODU1OWQ5
Li5hMjhkMzZlZjM5ZGVlYmYzYTg4MjMyNjVhMGM5MmI5YjYxMjJmNzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTIzICBNYXJqYSBIw7ZsdHTD
pCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gQVBJIGZvciByZXRyaWV2
aW5nIG5hdGl2ZSBtZW1vcnkgaW5mb3JtYXRpb24gd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBy
ZW1vdGUgaW5zcGVjdGluZyBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAo
V2ViRGV2VG9vbHNBZ2VudCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmdldFByb2Nlc3NNZW1v
cnlEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnRJbXBsKToKKwogMjAx
My0wMS0xMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yIFtjaHJvbWl1bV06IHRvb2xiYXIgYm9yZGVyIGlzIG1pc3Npbmcgb24g
bm9uLU1hYyBpbiBkb2NrZWQtdG8tYm90dG9tIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBkYzJiNWNkMmFlMTA3YTBhMzZl
YzBlZWI0Y2Q2NjFlMWM0MjMwYTI1Li4xMmViM2Q4ODAzMmRhZGIyYTg4YWQwYmY3ZTIxMzIwOTA4
MjZlMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0xMTgsNyArMTE4LDExIEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAg
ICAgT3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gZG9tU3RvcmFnZUFnZW50UHRyKElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSwgbV9zdGF0ZS5nZXQoKSkpOwogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3Rv
cmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVu
ZChkb21TdG9yYWdlQWdlbnRQdHIucmVsZWFzZSgpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGlu
c3BlY3RvckNsaWVudCwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdlKSk7CisKKyAgICBPd25QdHI8SW5z
cGVjdG9yTWVtb3J5QWdlbnQ+IG1lbW9yeUFnZW50UHRyKEluc3BlY3Rvck1lbW9yeUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3Rh
dGUuZ2V0KCksIG1fcGFnZSkpOworICAgIG1fbWVtb3J5QWdlbnQgPSBtZW1vcnlBZ2VudFB0ci5n
ZXQoKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWVtb3J5QWdlbnRQdHIucmVsZWFzZSgpKTsKKwog
ICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0b3IsCiAgICAgICAgaW5zcGVjdG9yQ2xpZW50KSk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZUFnZW50
KSk7CkBAIC00MzEsNiArNDM1LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUHJv
Y2Vzc1Rhc2soKQogI2VuZGlmCiB9CiAKK0hhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdAoreworICAg
IEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IG1lbW9yeUluZm87CisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZ3JhcGg7CisgICAgbV9tZW1vcnlBZ2VudC0+Z2V0UHJvY2Vzc01lbW9yeURpc3Ry
aWJ1dGlvbkFzTWFwKDAsIGdyYXBoLCAmbWVtb3J5SW5mbyk7CisgICAgcmV0dXJuIG1lbW9yeUlu
Zm87Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCBjY2ZhZGEyNDE3Y2U3OThmMmM4NmEzMGMyODEwZDg3M2M2ZWFjZDQ1Li44ZDMzYzVm
OGI2NjE1N2EyMjk3OWQzYTgxNmI2M2ViNTRlODhmMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3Mg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBj
bGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpA
QCAtMTIzLDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQcm9jZXNzVGFzaygpOwog
ICAgIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKTsKIAorICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKIApAQCAtMTM4LDYg
KzE0MSw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAg
ICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9yZXNvdXJjZUFnZW50OwogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisgICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1fbWVt
b3J5QWdlbnQ7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDMyMjkyYzhkNWI4MDlkMDM4ZjViNWFh
ZDcxMDNmNjNiNTFmYTQ5YzMuLmNlMmQ5ZTE3ODI0MGY2MzFhZDVmYzlkZjAzNmIzYTQ3YzAzYjQ5
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcApAQCAtODEsMTEgKzgxLDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIE1lbW9yeVVz
YWdlU3RhdHNHZW5lcmF0b3IgewogcHVibGljOgotICAgIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0
b3IoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCogY2xpZW50KSA6IG1fY2xpZW50KGNs
aWVudCkgeyB9CisgICAgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvcigpIHsgfQogCi0gICAgdm9p
ZCBkdW1wKEluc3BlY3Rvck1lbW9yeUJsb2NrcyogY2hpbGRyZW4pCisgICAgdm9pZCBkdW1wKGNv
bnN0IFR5cGVOYW1lVG9TaXplTWFwJiBzaXplc01hcCwgSW5zcGVjdG9yTWVtb3J5QmxvY2tzKiBj
aGlsZHJlbikKICAgICB7Ci0gICAgICAgIG1fc2l6ZXNNYXAgPSBtX2NsaWVudC0+c2l6ZXNNYXAo
KTsKKyAgICAgICAgbV9zaXplc01hcCA9IHNpemVzTWFwOwogCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBmaWx0ZXIgb3V0IFJlbmRlcmluZyB0eXBlIGJlY2F1c2UgdGhlIGNvdmVyYWdlIGlzIG5vdCBn
b29kIGVub3VnaCBhdCB0aGUgbW9tZW50CiAgICAgICAgIC8vIGFuZCByZXBvcnQgUmVuZGVyQXJl
bmEgc2l6ZSBpbnN0ZWFkLgpAQCAtMTA5LDcgKzEwOSw2IEBAIHB1YmxpYzoKICAgICAgICAgd2hp
bGUgKGluZGV4IDwgb2JqZWN0VHlwZXMuc2l6ZSgpKQogICAgICAgICAgICAgaW5kZXggPSBidWls
ZE9iamVjdEZvckluZGV4KGluZGV4LCBvYmplY3RUeXBlcywgY2hpbGRyZW4pOwogCi0gICAgICAg
IGFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRlYnVnRGF0YShjaGlsZHJlbik7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMTQ3LDIxICsxNDYsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaW5k
ZXg7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEo
SW5zcGVjdG9yTWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKLSAgICB7Ci0gICAgICAgIGlmIChtX2Ns
aWVudC0+Y2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gdG90YWxJbnN0cnVtZW50ZWQgPSBJbnNwZWN0b3JNZW1vcnlC
bG9jazo6Y3JlYXRlKCkuc2V0TmFtZSgiSW5zdHJ1bWVudGVkT2JqZWN0c0NvdW50Iik7Ci0gICAg
ICAgICAgICB0b3RhbEluc3RydW1lbnRlZC0+c2V0U2l6ZShtX2NsaWVudC0+dG90YWxDb3VudGVk
T2JqZWN0cygpKTsKLQotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBp
bmNvcnJlY3RseUluc3RydW1lbnRlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5z
ZXROYW1lKCJJbnN0cnVtZW50ZWRCdXROb3RBbGxvY2F0ZWRPYmplY3RzQ291bnQiKTsKLSAgICAg
ICAgICAgIGluY29ycmVjdGx5SW5zdHJ1bWVudGVkLT5zZXRTaXplKG1fY2xpZW50LT50b3RhbE9i
amVjdHNOb3RJbkFsbG9jYXRlZFNldCgpKTsKLQotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0
ZW0odG90YWxJbnN0cnVtZW50ZWQpOwotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5j
b3JyZWN0bHlJbnN0cnVtZW50ZWQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50SW1wbCogbV9jbGllbnQ7CiAgICAgVHlwZU5hbWVUb1NpemVNYXAg
bV9zaXplc01hcDsKIH07CiAKQEAgLTUyNSwyMSArNTA5LDUyIEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3REb21UcmVlSW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsJiBtZW1vcnlJbnN0cnVtZW50
YXRpb24sCiAgICAgZG9tVHJlZXNJdGVyYXRvci52aXNpdE1lbW9yeUNhY2hlKCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9ja3M+IGNoaWxkcmVuKQorc3RhdGljIHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRz
SW5mbyhUeXBlTmFtZVRvU2l6ZU1hcCogbWVtb3J5SW5mbykKIHsKICAgICBWZWN0b3I8TWVtb3J5
VXNhZ2VTdXBwb3J0OjpDb21wb25lbnRJbmZvPiBjb21wb25lbnRzOwogICAgIE1lbW9yeVVzYWdl
U3VwcG9ydDo6bWVtb3J5VXNhZ2VCeUNvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAgZm9yIChW
ZWN0b3I8TWVtb3J5VXNhZ2VTdXBwb3J0OjpDb21wb25lbnRJbmZvPjo6aXRlcmF0b3IgaXQgPSBj
b21wb25lbnRzLmJlZ2luKCk7IGl0ICE9IGNvbXBvbmVudHMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBibG9jayA9IEluc3BlY3Rvck1lbW9yeUJs
b2NrOjpjcmVhdGUoKS5zZXROYW1lKGl0LT5tX25hbWUpOwotICAgICAgICBibG9jay0+c2V0U2l6
ZShpdC0+bV9zaXplSW5CeXRlcyk7Ci0gICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJsb2NrKTsK
KyAgICBmb3IgKFZlY3RvcjxNZW1vcnlVc2FnZVN1cHBvcnQ6OkNvbXBvbmVudEluZm8+OjppdGVy
YXRvciBpdCA9IGNvbXBvbmVudHMuYmVnaW4oKTsgaXQgIT0gY29tcG9uZW50cy5lbmQoKTsgKytp
dCkKKyAgICAgICAgbWVtb3J5SW5mby0+YWRkKGl0LT5tX25hbWUsIGl0LT5tX3NpemVJbkJ5dGVz
KTsKK30KKworc3RhdGljIHZvaWQgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKE1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwqIGNsaWVudCwgVHlwZU5hbWVUb1NpemVNYXAq
IG1lbW9yeUluZm8pCit7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tJbnN0cnVtZW50ZWRPYmplY3Rz
KCkpIHsKKyAgICAgICAgbWVtb3J5SW5mby0+YWRkKCJJbnN0cnVtZW50ZWRPYmplY3RzQ291bnQi
LCBjbGllbnQtPnRvdGFsQ291bnRlZE9iamVjdHMoKSk7CisgICAgICAgIG1lbW9yeUluZm8tPmFk
ZCgiSW5zdHJ1bWVudGVkQnV0Tm90QWxsb2NhdGVkT2JqZWN0c0NvdW50IiwgY2xpZW50LT50b3Rh
bE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldCgpKTsKICAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBj
b25zdCBib29sKiByZXBvcnRHcmFwaCwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJv
Y2Vzc01lbW9yeSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoKQogeworICAgIFR5cGVO
YW1lVG9TaXplTWFwIG1lbW9yeUluZm87CisgICAgZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlv
bkFzTWFwKHJlcG9ydEdyYXBoICYmICpyZXBvcnRHcmFwaCwgZ3JhcGgsICZtZW1vcnlJbmZvKTsK
KworICAgIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0b3Igc3RhdHNHZW5lcmF0b3I7CisgICAgUmVm
UHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9j
a3M6OmNyZWF0ZSgpOworICAgIHN0YXRzR2VuZXJhdG9yLmR1bXAobWVtb3J5SW5mbywgY2hpbGRy
ZW4uZ2V0KCkpOworCisgICAgcHJvY2Vzc01lbW9yeSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpj
cmVhdGUoKS5zZXROYW1lKFdlYkNvcmVNZW1vcnlUeXBlczo6UHJvY2Vzc1ByaXZhdGVNZW1vcnkp
OworICAgIHByb2Nlc3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKworICAgIHNpemVf
dCBwcml2YXRlQnl0ZXMgPSAwOworICAgIHNpemVfdCBzaGFyZWRCeXRlcyA9IDA7CisgICAgTWVt
b3J5VXNhZ2VTdXBwb3J0Ojpwcm9jZXNzTWVtb3J5U2l6ZXNJbkJ5dGVzKCZwcml2YXRlQnl0ZXMs
ICZzaGFyZWRCeXRlcyk7CisgICAgcHJvY2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMp
OworfQorCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5z
cGVjdG9yKTsKKyAgICBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+Ojpy
ZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZFdlYWtQb2lu
dGVyKG1faW5zcGVjdG9yQ2xpZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworfQor
Cit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9u
QXNNYXAoYm9vbCByZXBvcnRHcmFwaCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoLCBU
eXBlTmFtZVRvU2l6ZU1hcCogbWVtb3J5SW5mbykKK3sKICAgICBPd25QdHI8SGVhcEdyYXBoU2Vy
aWFsaXplcj4gZ3JhcGhTZXJpYWxpemVyOwotICAgIGlmIChyZXBvcnRHcmFwaCAmJiAqcmVwb3J0
R3JhcGgpCisgICAgaWYgKHJlcG9ydEdyYXBoKQogICAgICAgICBncmFwaFNlcmlhbGl6ZXIgPSBh
ZG9wdFB0cihuZXcgSGVhcEdyYXBoU2VyaWFsaXplcigpKTsKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb25DbGllbnRJbXBsIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudChncmFwaFNlcmlhbGl6
ZXIuZ2V0KCkpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5nZXRBbGxvY2F0ZWRPYmplY3RzKG1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5hbGxvY2F0ZWRPYmplY3RzKCkpOwpAQCAtNTUyLDkg
KzU2Nyw2IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBib29sCiAgICAgUGxhdGZvcm1NZW1vcnlJbnN0
cnVtZW50YXRpb246OnJlcG9ydFN0YXRpY01lbWJlcnNNZW1vcnlVc2FnZSgmbWVtb3J5SW5zdHJ1
bWVudGF0aW9uKTsKICAgICBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTdGF0
aWNNZW1iZXJzTWVtb3J5VXNhZ2UoJm1lbW9yeUluc3RydW1lbnRhdGlvbik7CiAKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nr
czo6Y3JlYXRlKCk7Ci0gICAgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhjaGlsZHJlbik7Ci0K
ICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdCh0aGlzKTsKICAgICBtZW1v
cnlJbnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb24pOwog
ICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudCk7CkBAIC01NjUsMjQgKzU3Nyw5IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBib29s
CiAKICAgICBtX2luc3BlY3RvckNsaWVudC0+ZHVtcFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMo
bWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmNvdW50ZWRPYmplY3RzKCkpOwogCi0gICAgTWVt
b3J5VXNhZ2VTdGF0c0dlbmVyYXRvciBzdGF0c0dlbmVyYXRvcigmbWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50KTsKLSAgICBzdGF0c0dlbmVyYXRvci5kdW1wKGNoaWxkcmVuLmdldCgpKTsKLQot
ICAgIHByb2Nlc3NNZW1vcnkgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFt
ZShXZWJDb3JlTWVtb3J5VHlwZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKLSAgICBwcm9jZXNz
TWVtb3J5LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7Ci0KLSAgICBzaXplX3QgcHJpdmF0ZUJ5dGVz
ID0gMDsKLSAgICBzaXplX3Qgc2hhcmVkQnl0ZXMgPSAwOwotICAgIE1lbW9yeVVzYWdlU3VwcG9y
dDo6cHJvY2Vzc01lbW9yeVNpemVzSW5CeXRlcygmcHJpdmF0ZUJ5dGVzLCAmc2hhcmVkQnl0ZXMp
OwotICAgIHByb2Nlc3NNZW1vcnktPnNldFNpemUocHJpdmF0ZUJ5dGVzKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3Rvcik7Ci0gICAg
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50Pjo6cmVwb3J0TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2luc3BlY3Rv
ckNsaWVudCk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9wYWdlKTsKKyAgICAqbWVtb3J5SW5mbyA9
IG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudC5zaXplc01hcCgpOworICAgIGFkZFBsYXRmb3Jt
Q29tcG9uZW50c0luZm8obWVtb3J5SW5mbyk7CisgICAgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9u
RGVidWdEYXRhKCZtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQsIG1lbW9yeUluZm8pOwogfQog
CiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIElu
c3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMTQ3Y2ZkYTMwOGZk
MDFlNWYyNWE4YTI5ZDVmNTdmMTVmNzRhZTk0ZS4uZWM1OWM3ODUyNzc1MTk5ZDg5MTYxYjc0NGM2
OTgyM2JjNzE2NjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIHZv
aWQgZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFwKGJvb2wgcmVwb3J0R3JhcGgsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBncmFwaCwgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4qIG1l
bW9yeUluZm8pOworCiBwcml2YXRlOgogICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSos
IFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGV2VG9vbHNBZ2VudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9v
bHNBZ2VudC5oCmluZGV4IGU5N2I5MDJkMTg0OTliNThkMzg4MmVkZmUxMjM0ZjA2NTIzZTYwNDcu
LmRlNTliYmNiOGZmNWMyMzA0MzNiZmM4Mzc0MDQxOTNiODMxYmU5ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKQEAgLTMyLDYgKzMy
LDggQEAKICNkZWZpbmUgV2ViRGV2VG9vbHNBZ2VudF9oCiAKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJEZXZU
b29sc0FnZW50Q2xpZW50OwpAQCAtNzUsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgLy8gRXhwb3Nl
ZCBmb3IgVGVzdFJ1bm5lci4KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihsb25nIGNhbGxJZCwgY29uc3QgV2ViU3RyaW5nJiBzY3JpcHQpID0gMDsKIAorICAgIHZpcnR1
YWwgV2ViVmVjdG9yPHN0ZDo6cGFpcjxXZWJTdHJpbmcsIHNpemVfdD4gPiBnZXRQcm9jZXNzTWVt
b3J5RGlzdHJpYnV0aW9uKCkgY29uc3QgPSAwOworCiAgICAgY2xhc3MgTWVzc2FnZURlc2NyaXB0
b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+TWVzc2FnZURlc2NyaXB0b3IoKSB7
IH0KQEAgLTk5LDYgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFBhdGNoZXMgbWVzc2FnZSBy
ZXNwb25zZSB3aXRoIHRoZSBkYXRhIGNhbGN1bGF0ZWQgaW4gYnJvd3Nlci4KICAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBXZWJTdHJpbmcgcGF0Y2hXaXRoQnJvd3NlckRhdGEoY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlLCBCcm93c2VyRGF0YUhpbnQsIGNvbnN0IFdlYlN0cmluZyYgaGludERhdGEp
OworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBiNThjZjYxYjRkMDA1
ZjIyZWRhMjljMmM3YmE1YzU1MjRjMzFlMTM1Li43MjI2YjAzNWJjOWY5M2ZjODRmMTJkNGE3NGQ0
YzAxYjc5NTIwZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC02MzQsNiArNjM0LDE3IEBAIHZvaWQgV2ViRGV2VG9v
bHNBZ2VudEltcGw6OnBhaW50UGFnZU92ZXJsYXkoV2ViQ2FudmFzKiBjYW52YXMpCiAgICAgfQog
fQogCitXZWJWZWN0b3I8c3RkOjpwYWlyPFdlYlN0cmluZywgc2l6ZV90PiA+IFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3QKK3sKKyAgICBI
YXNoTWFwPFN0cmluZywgc2l6ZV90PiBtZW1vcnlJbmZvID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKTsK
KyAgICBXZWJWZWN0b3I8c3RkOjpwYWlyPFdlYlN0cmluZywgc2l6ZV90PiA+IG1lbW9yeUluZm9W
ZWN0b3IoKHNpemVfdCltZW1vcnlJbmZvLnNpemUoKSk7CisgICAgc2l6ZV90IGkgPSAwOworICAg
IGZvciAoSGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWVtb3J5
SW5mby5iZWdpbigpOyBpdCAhPSBtZW1vcnlJbmZvLmVuZCgpOyArK2l0KQorICAgICAgICBtZW1v
cnlJbmZvVmVjdG9yW2krK10gPSBzdGQ6Om1ha2VfcGFpcihpdC0+a2V5LCBpdC0+dmFsdWUpOwor
ICAgIHJldHVybiBtZW1vcnlJbmZvVmVjdG9yOworfQorCisKIHZvaWQgV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OmhpZ2hsaWdodCgpCiB7CiAgICAgbV93ZWJWaWV3SW1wbC0+YWRkUGFnZU92ZXJsYXko
dGhpcywgT3ZlcmxheVpPcmRlcnM6OmhpZ2hsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAppbmRleCBlMGYyYjE0YWJiNTcyYmIz
MzhhYTQ1ZWIzYmMyYzhhNGY4MzY5YTFiLi5iMDg1YmY0ZDlkMTlhZjFhNmYwOGJmNWUwM2RjN2Q1
NGFkZWFhYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmgKQEAgLTExNyw2ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViUGFn
ZU92ZXJsYXkKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYWdlT3ZlcmxheShXZWJDYW52YXMqKTsK
IAorICAgIHZpcnR1YWwgV2ViVmVjdG9yPHN0ZDo6cGFpcjxXZWJTdHJpbmcsIHNpemVfdD4gPiBn
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8g
V2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFByb2Nlc3NUYXNr
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184701</attachid>
            <date>2013-01-25 01:51:11 -0800</date>
            <delta_ts>2013-01-25 05:04:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130125104801.patch</filename>
            <type>text/plain</type>
            <size>18851</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUxNDFiOGU3NGExNzM1
MTliNTk5ZDFjNWM2YTNlZGM3YTY0Nzg3Zi4uNGU0M2QyZjdjOGUwYzQwMTQ2MTZlMDY1NzIzMWQx
YWFlYjgwMGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTI1ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gQVBJIGZv
ciByZXRyaWV2aW5nIG5hdGl2ZSBtZW1vcnkgaW5mb3JtYXRpb24gd2l0aG91dCBnb2luZyB0aHJv
dWdoIHRoZSByZW1vdGUgaW5zcGVjdGluZyBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChqdXN0IEFQSSBwbHVtYmlu
ZykuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2Nlc3NNZW1vcnlE
aXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8pOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlJbnN0cnVtZW50YXRp
b25EZWJ1Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Omdl
dFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TWVtb3J5QWdlbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXApOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAoSW5zcGVj
dG9yTWVtb3J5QWdlbnQpOgorCiAyMDEzLTAxLTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogT3B0aW9uK0NsaWNrIG9uIE5vZGUg
RXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDVkMTc4Y2QyYWJjMzllMzA0YmFkNjA2ZTA1MmM4OTg1NTc4NTU5ZDkuLjM0ZDc1
NTcwMjIwY2ZjMjc1MzExYzQ1YWNkNmQwYWE1MGZlNzg0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDEtMjUgIE1hcmphIEjDtmx0dMOkICA8bWFy
amFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBhbiBBUEkgZm9yIHJldHJpZXZpbmcgbmF0
aXZlIG1lbW9yeSBpbmZvcm1hdGlvbiB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHJlbW90ZSBp
bnNwZWN0aW5nIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDc2NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdl
bnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJEZXZUb29sc0FnZW50KToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5VXNhZ2VJbmZvOjpXZWJNZW1vcnlVc2Fn
ZUluZm8pOgorICAgICAgICAoV2ViTWVtb3J5VXNhZ2VJbmZvKToKKyAgICAgICAgKiBzcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnRJbXBsKToKKwogMjAxMy0wMS0xMSAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yIFtj
aHJvbWl1bV06IHRvb2xiYXIgYm9yZGVyIGlzIG1pc3Npbmcgb24gbm9uLU1hYyBpbiBkb2NrZWQt
dG8tYm90dG9tIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCBkYzJiNWNkMmFlMTA3YTBhMzZlYzBlZWI0Y2Q2NjFlMWM0MjMw
YTI1Li4xMmViM2Q4ODAzMmRhZGIyYTg4YWQwYmY3ZTIxMzIwOTA4MjZlMmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTgs
NyArMTE4LDExIEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgT3duUHRyPEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4gZG9tU3RvcmFnZUFnZW50UHRyKEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkp
OwogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50ID0gZG9tU3Rv
cmFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkb21TdG9yYWdlQWdlbnRQ
dHIucmVsZWFzZSgpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGluc3BlY3RvckNsaWVudCwgbV9z
dGF0ZS5nZXQoKSwgbV9wYWdlKSk7CisKKyAgICBPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+
IG1lbW9yeUFnZW50UHRyKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0b3JDbGllbnQsIG1fc3RhdGUuZ2V0KCksIG1fcGFnZSkp
OworICAgIG1fbWVtb3J5QWdlbnQgPSBtZW1vcnlBZ2VudFB0ci5nZXQoKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWVtb3J5QWdlbnRQdHIucmVsZWFzZSgpKTsKKwogICAgIG1fYWdlbnRzLmFwcGVu
ZChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUuZ2V0KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBh
Z2VJbnNwZWN0b3IsCiAgICAgICAgaW5zcGVjdG9yQ2xpZW50KSk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZUFnZW50KSk7CkBAIC00MzEsNiArNDM1
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUHJvY2Vzc1Rhc2soKQogI2VuZGlm
CiB9CiAKK0hhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdAoreworICAgIEhhc2hNYXA8U3RyaW5nLCBz
aXplX3Q+IG1lbW9yeUluZm87CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZ3JhcGg7Cisg
ICAgbV9tZW1vcnlBZ2VudC0+Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFwKDAsIGdy
YXBoLCAmbWVtb3J5SW5mbyk7CisgICAgcmV0dXJuIG1lbW9yeUluZm87Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBjY2ZhZGEyNDE3
Y2U3OThmMmM4NmEzMGMyODEwZDg3M2M2ZWFjZDQ1Li44ZDMzYzVmOGI2NjE1N2EyMjk3OWQzYTgx
NmI2M2ViNTRlODhmMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CitjbGFzcyBJbnNwZWN0b3JN
ZW1vcnlBZ2VudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdl
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50OwpAQCAtMTIzLDYgKzEyNCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHdpbGxQcm9jZXNzVGFzaygpOwogICAgIHZvaWQgZGlkUHJvY2Vz
c1Rhc2soKTsKIAorICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IGdldFByb2Nlc3NNZW1vcnlE
aXN0cmlidXRpb24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKIApAQCAtMTM4LDYgKzE0MSw3IEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAgICAgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogbV9yZXNvdXJjZUFnZW50OwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdl
QWdlbnQ7CisgICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1fbWVtb3J5QWdlbnQ7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9k
ZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdn
ZXJBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCmluZGV4IDMyMjkyYzhkNWI4MDlkMDM4ZjViNWFhZDcxMDNmNjNiNTFmYTQ5YzMu
LmNlMmQ5ZTE3ODI0MGY2MzFhZDVmYzlkZjAzNmIzYTQ3YzAzYjQ5NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtODEsMTEg
KzgxLDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0b3Ig
ewogcHVibGljOgotICAgIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0b3IoTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQ2xpZW50SW1wbCogY2xpZW50KSA6IG1fY2xpZW50KGNsaWVudCkgeyB9CisgICAgTWVt
b3J5VXNhZ2VTdGF0c0dlbmVyYXRvcigpIHsgfQogCi0gICAgdm9pZCBkdW1wKEluc3BlY3Rvck1l
bW9yeUJsb2NrcyogY2hpbGRyZW4pCisgICAgdm9pZCBkdW1wKGNvbnN0IFR5cGVOYW1lVG9TaXpl
TWFwJiBzaXplc01hcCwgSW5zcGVjdG9yTWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKICAgICB7Ci0g
ICAgICAgIG1fc2l6ZXNNYXAgPSBtX2NsaWVudC0+c2l6ZXNNYXAoKTsKKyAgICAgICAgbV9zaXpl
c01hcCA9IHNpemVzTWFwOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBmaWx0ZXIgb3V0IFJlbmRl
cmluZyB0eXBlIGJlY2F1c2UgdGhlIGNvdmVyYWdlIGlzIG5vdCBnb29kIGVub3VnaCBhdCB0aGUg
bW9tZW50CiAgICAgICAgIC8vIGFuZCByZXBvcnQgUmVuZGVyQXJlbmEgc2l6ZSBpbnN0ZWFkLgpA
QCAtMTA5LDcgKzEwOSw2IEBAIHB1YmxpYzoKICAgICAgICAgd2hpbGUgKGluZGV4IDwgb2JqZWN0
VHlwZXMuc2l6ZSgpKQogICAgICAgICAgICAgaW5kZXggPSBidWlsZE9iamVjdEZvckluZGV4KGlu
ZGV4LCBvYmplY3RUeXBlcywgY2hpbGRyZW4pOwogCi0gICAgICAgIGFkZE1lbW9yeUluc3RydW1l
bnRhdGlvbkRlYnVnRGF0YShjaGlsZHJlbik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTQ3LDIx
ICsxNDYsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgfQogCi0gICAg
dm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEoSW5zcGVjdG9yTWVtb3J5Qmxv
Y2tzKiBjaGlsZHJlbikKLSAgICB7Ci0gICAgICAgIGlmIChtX2NsaWVudC0+Y2hlY2tJbnN0cnVt
ZW50ZWRPYmplY3RzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gdG90YWxJbnN0cnVtZW50ZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0
TmFtZSgiSW5zdHJ1bWVudGVkT2JqZWN0c0NvdW50Iik7Ci0gICAgICAgICAgICB0b3RhbEluc3Ry
dW1lbnRlZC0+c2V0U2l6ZShtX2NsaWVudC0+dG90YWxDb3VudGVkT2JqZWN0cygpKTsKLQotICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBpbmNvcnJlY3RseUluc3RydW1l
bnRlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKCJJbnN0cnVtZW50
ZWRCdXROb3RBbGxvY2F0ZWRPYmplY3RzQ291bnQiKTsKLSAgICAgICAgICAgIGluY29ycmVjdGx5
SW5zdHJ1bWVudGVkLT5zZXRTaXplKG1fY2xpZW50LT50b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRl
ZFNldCgpKTsKLQotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0odG90YWxJbnN0cnVtZW50
ZWQpOwotICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5jb3JyZWN0bHlJbnN0cnVtZW50
ZWQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50
SW1wbCogbV9jbGllbnQ7CiAgICAgVHlwZU5hbWVUb1NpemVNYXAgbV9zaXplc01hcDsKIH07CiAK
QEAgLTUyNSwyMSArNTA5LDUyIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3REb21UcmVlSW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsJiBtZW1vcnlJbnN0cnVtZW50YXRpb24sCiAgICAgZG9tVHJl
ZXNJdGVyYXRvci52aXNpdE1lbW9yeUNhY2hlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFBsYXRm
b3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxk
cmVuKQorc3RhdGljIHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhUeXBlTmFtZVRvU2l6
ZU1hcCogbWVtb3J5SW5mbykKIHsKICAgICBWZWN0b3I8TWVtb3J5VXNhZ2VTdXBwb3J0OjpDb21w
b25lbnRJbmZvPiBjb21wb25lbnRzOwogICAgIE1lbW9yeVVzYWdlU3VwcG9ydDo6bWVtb3J5VXNh
Z2VCeUNvbXBvbmVudHMoY29tcG9uZW50cyk7Ci0gICAgZm9yIChWZWN0b3I8TWVtb3J5VXNhZ2VT
dXBwb3J0OjpDb21wb25lbnRJbmZvPjo6aXRlcmF0b3IgaXQgPSBjb21wb25lbnRzLmJlZ2luKCk7
IGl0ICE9IGNvbXBvbmVudHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiBibG9jayA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXRO
YW1lKGl0LT5tX25hbWUpOwotICAgICAgICBibG9jay0+c2V0U2l6ZShpdC0+bV9zaXplSW5CeXRl
cyk7Ci0gICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJsb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxN
ZW1vcnlVc2FnZVN1cHBvcnQ6OkNvbXBvbmVudEluZm8+OjppdGVyYXRvciBpdCA9IGNvbXBvbmVu
dHMuYmVnaW4oKTsgaXQgIT0gY29tcG9uZW50cy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWVtb3J5
SW5mby0+YWRkKGl0LT5tX25hbWUsIGl0LT5tX3NpemVJbkJ5dGVzKTsKK30KKworc3RhdGljIHZv
aWQgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKE1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudEltcGwqIGNsaWVudCwgVHlwZU5hbWVUb1NpemVNYXAqIG1lbW9yeUluZm8pCit7Cisg
ICAgaWYgKGNsaWVudC0+Y2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpIHsKKyAgICAgICAgbWVt
b3J5SW5mby0+YWRkKCJJbnN0cnVtZW50ZWRPYmplY3RzQ291bnQiLCBjbGllbnQtPnRvdGFsQ291
bnRlZE9iamVjdHMoKSk7CisgICAgICAgIG1lbW9yeUluZm8tPmFkZCgiSW5zdHJ1bWVudGVkQnV0
Tm90QWxsb2NhdGVkT2JqZWN0c0NvdW50IiwgY2xpZW50LT50b3RhbE9iamVjdHNOb3RJbkFsbG9j
YXRlZFNldCgpKTsKICAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRH
cmFwaCwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIGdyYXBoKQogeworICAgIFR5cGVOYW1lVG9TaXplTWFwIG1lbW9y
eUluZm87CisgICAgZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFwKHJlcG9ydEdyYXBo
ICYmICpyZXBvcnRHcmFwaCwgZ3JhcGgsICZtZW1vcnlJbmZvKTsKKworICAgIE1lbW9yeVVzYWdl
U3RhdHNHZW5lcmF0b3Igc3RhdHNHZW5lcmF0b3I7CisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOworICAg
IHN0YXRzR2VuZXJhdG9yLmR1bXAobWVtb3J5SW5mbywgY2hpbGRyZW4uZ2V0KCkpOworCisgICAg
cHJvY2Vzc01lbW9yeSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKFdl
YkNvcmVNZW1vcnlUeXBlczo6UHJvY2Vzc1ByaXZhdGVNZW1vcnkpOworICAgIHByb2Nlc3NNZW1v
cnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKworICAgIHNpemVfdCBwcml2YXRlQnl0ZXMgPSAw
OworICAgIHNpemVfdCBzaGFyZWRCeXRlcyA9IDA7CisgICAgTWVtb3J5VXNhZ2VTdXBwb3J0Ojpw
cm9jZXNzTWVtb3J5U2l6ZXNJbkJ5dGVzKCZwcml2YXRlQnl0ZXMsICZzaGFyZWRCeXRlcyk7Cisg
ICAgcHJvY2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMpOworfQorCit2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yKTsKKyAgICBJbnNw
ZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+OjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1faW5zcGVjdG9yQ2xp
ZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworfQorCit2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXAoYm9vbCByZXBvcnRH
cmFwaCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoLCBUeXBlTmFtZVRvU2l6ZU1hcCog
bWVtb3J5SW5mbykKK3sKICAgICBPd25QdHI8SGVhcEdyYXBoU2VyaWFsaXplcj4gZ3JhcGhTZXJp
YWxpemVyOwotICAgIGlmIChyZXBvcnRHcmFwaCAmJiAqcmVwb3J0R3JhcGgpCisgICAgaWYgKHJl
cG9ydEdyYXBoKQogICAgICAgICBncmFwaFNlcmlhbGl6ZXIgPSBhZG9wdFB0cihuZXcgSGVhcEdy
YXBoU2VyaWFsaXplcigpKTsKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsIG1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudChncmFwaFNlcmlhbGl6ZXIuZ2V0KCkpOwogICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT5nZXRBbGxvY2F0ZWRPYmplY3RzKG1lbW9yeUluc3RydW1lbnRhdGlv
bkNsaWVudC5hbGxvY2F0ZWRPYmplY3RzKCkpOwpAQCAtNTUyLDkgKzU2Nyw2IEBAIHZvaWQgSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJp
bmcqLCBjb25zdCBib29sCiAgICAgUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9y
dFN0YXRpY01lbWJlcnNNZW1vcnlVc2FnZSgmbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKICAgICBX
ZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTdGF0aWNNZW1iZXJzTWVtb3J5VXNh
Z2UoJm1lbW9yeUluc3RydW1lbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nrczo6Y3JlYXRlKCk7Ci0gICAg
YWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhjaGlsZHJlbik7Ci0KICAgICBtZW1vcnlJbnN0cnVt
ZW50YXRpb24uYWRkUm9vdE9iamVjdCh0aGlzKTsKICAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24u
YWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb24pOwogICAgIG1lbW9yeUluc3RydW1l
bnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7CkBAIC01
NjUsMjQgKzU3Nyw5IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1v
cnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBib29sCiAKICAgICBtX2luc3BlY3Rv
ckNsaWVudC0+ZHVtcFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMobWVtb3J5SW5zdHJ1bWVudGF0
aW9uQ2xpZW50LmNvdW50ZWRPYmplY3RzKCkpOwogCi0gICAgTWVtb3J5VXNhZ2VTdGF0c0dlbmVy
YXRvciBzdGF0c0dlbmVyYXRvcigmbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KTsKLSAgICBz
dGF0c0dlbmVyYXRvci5kdW1wKGNoaWxkcmVuLmdldCgpKTsKLQotICAgIHByb2Nlc3NNZW1vcnkg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlw
ZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKLSAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7Ci0KLSAgICBzaXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKLSAgICBzaXplX3Qg
c2hhcmVkQnl0ZXMgPSAwOwotICAgIE1lbW9yeVVzYWdlU3VwcG9ydDo6cHJvY2Vzc01lbW9yeVNp
emVzSW5CeXRlcygmcHJpdmF0ZUJ5dGVzLCAmc2hhcmVkQnl0ZXMpOwotICAgIHByb2Nlc3NNZW1v
cnktPnNldFNpemUocHJpdmF0ZUJ5dGVzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3Rvcik7Ci0gICAgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3Rvck1lbW9yeUFnZW50Pjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7Ci0gICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2luc3BlY3RvckNsaWVudCk7Ci0gICAgaW5m
by5hZGRNZW1iZXIobV9wYWdlKTsKKyAgICAqbWVtb3J5SW5mbyA9IG1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudC5zaXplc01hcCgpOworICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8obWVt
b3J5SW5mbyk7CisgICAgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKCZtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQsIG1lbW9yeUluZm8pOwogfQogCiBJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvckNvbXBvc2l0ZVN0
YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMTQ3Y2ZkYTMwOGZkMDFlNWYyNWE4YTI5ZDVmNTdm
MTVmNzRhZTk0ZS4uZWM1OWM3ODUyNzc1MTk5ZDg5MTYxYjc0NGM2OTgyM2JjNzE2NjU2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAg
LTYzLDYgKzYzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIHZvaWQgZ2V0UHJvY2Vzc01lbW9y
eURpc3RyaWJ1dGlvbkFzTWFwKGJvb2wgcmVwb3J0R3JhcGgsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBncmFwaCwgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4qIG1lbW9yeUluZm8pOworCiBwcml2
YXRlOgogICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNw
ZWN0b3JDbGllbnQqLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSosIFBhZ2UqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDVkODMzMDg3YjFhOWZlZGM3ZjZmMGQyZDA2NzdiMmQ5
MDRiMDVlZGIuLjQwNmU0OGMyNTRiOTQ2ZmFkOTY2YjE3MDZiYjEyNWU4ODE1NmM5YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJNZWRpYVBsYXllckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
Yk1lZGlhU3RyZWFtUmVnaXN0cnkuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW1v
cnlVc2FnZUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZW51SXRlbUluZm8u
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOYXZpZ2F0aW9uVHlwZS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oCmluZGV4IGU5N2I5
MDJkMTg0OTliNThkMzg4MmVkZmUxMjM0ZjA2NTIzZTYwNDcuLmJhNmM3MmZjNDhmNGEyZDRiOTgy
ZGJlYTMzNDdkYTZiZjQ4Mzk3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgV2ViRGV2
VG9vbHNBZ2VudF9oCiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBXZWJVUkxSZXNwb25z
ZTsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIHN0cnVj
dCBXZWJQb2ludDsKK3N0cnVjdCBXZWJNZW1vcnlVc2FnZUluZm87CiBzdHJ1Y3QgV2ViVVJMRXJy
b3I7CiAKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnQgewpAQCAtNzUsNiArNzcsOCBAQCBwdWJsaWM6
CiAgICAgLy8gRXhwb3NlZCBmb3IgVGVzdFJ1bm5lci4KICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVh
dGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgV2ViU3RyaW5nJiBzY3JpcHQpID0g
MDsKIAorICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4gZ2V0UHJvY2Vz
c01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0ID0gMDsKKwogICAgIGNsYXNzIE1lc3NhZ2VEZXNj
cmlwdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VEZXNjcmlwdG9y
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW1v
cnlVc2FnZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbW9yeVVz
YWdlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNWY4MWIyODhmMTFlM2UxNjUyZmIxN2IwMDIxZDRkNmMx
OTM4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZW1vcnlVc2FnZUluZm8uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJNZW1vcnlVc2FnZUluZm9faAorI2RlZmluZSBXZWJNZW1vcnlVc2FnZUluZm9faAorCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgV2ViTWVtb3J5VXNhZ2VJbmZvIHsKKyAgICBXZWJNZW1vcnlVc2FnZUluZm8oY29uc3QgV2Vi
U3RyaW5nJiBhbGxvY2F0b3IsIHNpemVfdCBhbGxvY2F0ZWQpCisgICAgICAgIDogYWxsb2NhdG9y
TmFtZShhbGxvY2F0b3IpCisgICAgICAgICwgYWxsb2NhdGVkQnl0ZXMoYWxsb2NhdGVkKQorICAg
IHsKKyAgICB9CisKKyAgICBXZWJNZW1vcnlVc2FnZUluZm8oKQorICAgICAgICA6IGFsbG9jYXRl
ZEJ5dGVzKDApCisgICAgeworICAgIH0KKworICAgIFdlYlN0cmluZyBhbGxvY2F0b3JOYW1lOwor
ICAgIHNpemVfdCBhbGxvY2F0ZWRCeXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViTWVtb3J5VXNhZ2VJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBiNThjZjYxYjRkMDA1
ZjIyZWRhMjljMmM3YmE1YzU1MjRjMzFlMTM1Li5lY2QxODI4MDljNDk3NWViMmViZGJjN2ViN2My
ZGQ5ZWYyN2JhZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiV2ViRGF0
YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJNZW1vcnlVc2FnZUluZm8uaCIKICNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4KQEAgLTYzNCw2ICs2MzUsMTYgQEAgdm9pZCBXZWJEZXZUb29s
c0FnZW50SW1wbDo6cGFpbnRQYWdlT3ZlcmxheShXZWJDYW52YXMqIGNhbnZhcykKICAgICB9CiB9
CiAKK1dlYlZlY3RvcjxXZWJNZW1vcnlVc2FnZUluZm8+IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpn
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3QKK3sKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc2l6ZV90PiBtZW1vcnlJbmZvID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKTsKKyAgICBXZWJWZWN0
b3I8V2ViTWVtb3J5VXNhZ2VJbmZvPiBtZW1vcnlJbmZvVmVjdG9yKChzaXplX3QpbWVtb3J5SW5m
by5zaXplKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBz
aXplX3Q+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1lbW9yeUluZm8uYmVnaW4oKTsgaXQgIT0gbWVt
b3J5SW5mby5lbmQoKTsgKytpdCkKKyAgICAgICAgbWVtb3J5SW5mb1ZlY3RvcltpKytdID0gV2Vi
TWVtb3J5VXNhZ2VJbmZvKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgcmV0dXJuIG1lbW9yeUlu
Zm9WZWN0b3I7Cit9CisKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmhpZ2hsaWdodCgpCiB7
CiAgICAgbV93ZWJWaWV3SW1wbC0+YWRkUGFnZU92ZXJsYXkodGhpcywgT3ZlcmxheVpPcmRlcnM6
OmhpZ2hsaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaAppbmRleCBlMGYyYjE0YWJiNTcyYmIzMzhhYTQ1ZWIzYmMyYzhhNGY4MzY5
YTFiLi5mZTg4YTE3MzRjZTdkOTNjMWE4ODcxMmZmNjQ0ZjhmZjZjNzFkMWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTYx
LDYgKzYxLDcgQEAgY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNz
IFdlYlVSTFJlc3BvbnNlOwogY2xhc3MgV2ViVmlld0ltcGw7CitzdHJ1Y3QgV2ViTWVtb3J5VXNh
Z2VJbmZvOwogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdlYkRldlRvb2xzTWVzc2FnZURh
dGE7CiAKQEAgLTExNyw2ICsxMTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViUGFnZU92ZXJsYXkK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYWdlT3ZlcmxheShXZWJDYW52YXMqKTsKIAorICAgIHZp
cnR1YWwgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4gZ2V0UHJvY2Vzc01lbW9yeURpc3Ry
aWJ1dGlvbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8vIFdlYlRocmVhZDo6VGFza09ic2Vy
dmVyCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQcm9jZXNzVGFzaygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184728</attachid>
            <date>2013-01-25 05:04:05 -0800</date>
            <delta_ts>2013-01-25 05:04:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130125140056.patch</filename>
            <type>text/plain</type>
            <size>16308</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMmU1ZTVkM2E1ZmQxNTkyZTcyODc2OGNj
OTJiN2UzZGFhNWIwMjNlNi4uMTc2ODkyOTNjYjYwNjI4ZWQyN2E0MTEzZWJhMTU1MmJiNzkyNGNk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtMTE5LDcgKzExOSwxMSBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIE93
blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGRvbVN0b3JhZ2VBZ2VudFB0cihJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCkpKTsKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VB
Z2VudCA9IGRvbVN0b3JhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoZG9t
U3RvcmFnZUFnZW50UHRyLnJlbGVhc2UoKSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBpbnNwZWN0
b3JDbGllbnQsIG1fc3RhdGUuZ2V0KCksIG1fcGFnZSkpOworCisgICAgT3duUHRyPEluc3BlY3Rv
ck1lbW9yeUFnZW50PiBtZW1vcnlBZ2VudFB0cihJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgaW5zcGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdl
dCgpLCBtX3BhZ2UpKTsKKyAgICBtX21lbW9yeUFnZW50ID0gbWVtb3J5QWdlbnRQdHIuZ2V0KCk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKG1lbW9yeUFnZW50UHRyLnJlbGVhc2UoKSk7CisKICAgICBt
X2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX3N0YXRlLmdldCgpLCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpQYWdlSW5zcGVjdG9yLAogICAgICAgIGluc3BlY3RvckNsaWVudCkpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmNyZWF0ZSht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCkpOwpA
QCAtNDM4LDYgKzQ0MiwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFByb2Nlc3NU
YXNrKCkKICNlbmRpZgogfQogCitIYXNoTWFwPFN0cmluZywgc2l6ZV90PiBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3QKK3sKKyAgICBIYXNo
TWFwPFN0cmluZywgc2l6ZV90PiBtZW1vcnlJbmZvOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGdyYXBoOworICAgIG1fbWVtb3J5QWdlbnQtPmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRp
b25Bc01hcCgwLCBncmFwaCwgJm1lbW9yeUluZm8pOworICAgIHJldHVybiBtZW1vcnlJbmZvOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggYTE4YTg5ODU2ZGMwZDRlMWQzNTAwNWZlZGFmYTAyYjJjZTI1OGY3Ny4uYjIzNTM1ZWE5YTAw
MGIwZWMxZDM0NDgyYzdkMmQ2N2E5ODdhN2IwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OworY2xh
c3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKQEAgLTEy
NCw2ICsxMjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUHJvY2Vzc1Rhc2soKTsKICAgICB2
b2lkIGRpZFByb2Nlc3NUYXNrKCk7CiAKKyAgICBIYXNoTWFwPFN0cmluZywgc2l6ZV90PiBnZXRQ
cm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAKQEAgLTEzOSw2ICsxNDIs
NyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogICAgIElu
c3BlY3RvclJlc291cmNlQWdlbnQqIG1fcmVzb3VyY2VBZ2VudDsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50OworICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtX21lbW9yeUFn
ZW50OwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KiBtX2RvbURlYnVnZ2VyQWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCBiMzA1YzA4NDFkNWJhNzA4MzQ2MTM5YTg4NzAx
MTAzNDZkZTIyZDYyLi5jNDhjMWY2Nzc3N2M1M2EzMWE2MTE5MTI3YjMxMDcyYjE1M2I4MWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKQEAgLTgxLDExICs4MSwxMSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBNZW1vcnlVc2FnZVN0
YXRzR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yKE1l
bW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwqIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQp
IHsgfQorICAgIE1lbW9yeVVzYWdlU3RhdHNHZW5lcmF0b3IoKSB7IH0KIAotICAgIHZvaWQgZHVt
cChJbnNwZWN0b3JNZW1vcnlCbG9ja3MqIGNoaWxkcmVuKQorICAgIHZvaWQgZHVtcChjb25zdCBU
eXBlTmFtZVRvU2l6ZU1hcCYgc2l6ZXNNYXAsIEluc3BlY3Rvck1lbW9yeUJsb2NrcyogY2hpbGRy
ZW4pCiAgICAgewotICAgICAgICBtX3NpemVzTWFwID0gbV9jbGllbnQtPnNpemVzTWFwKCk7Cisg
ICAgICAgIG1fc2l6ZXNNYXAgPSBzaXplc01hcDsKIAogICAgICAgICAvLyBGSVhNRTogV2UgZmls
dGVyIG91dCBSZW5kZXJpbmcgdHlwZSBiZWNhdXNlIHRoZSBjb3ZlcmFnZSBpcyBub3QgZ29vZCBl
bm91Z2ggYXQgdGhlIG1vbWVudAogICAgICAgICAvLyBhbmQgcmVwb3J0IFJlbmRlckFyZW5hIHNp
emUgaW5zdGVhZC4KQEAgLTEwOSw3ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHdoaWxlIChp
bmRleCA8IG9iamVjdFR5cGVzLnNpemUoKSkKICAgICAgICAgICAgIGluZGV4ID0gYnVpbGRPYmpl
Y3RGb3JJbmRleChpbmRleCwgb2JqZWN0VHlwZXMsIGNoaWxkcmVuKTsKIAotICAgICAgICBhZGRN
ZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEoY2hpbGRyZW4pOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTE0NywyMSArMTQ2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGluZGV4Owog
ICAgIH0KIAotICAgIHZvaWQgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKEluc3Bl
Y3Rvck1lbW9yeUJsb2NrcyogY2hpbGRyZW4pCi0gICAgewotICAgICAgICBpZiAobV9jbGllbnQt
PmNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yTWVtb3J5QmxvY2s+IHRvdGFsSW5zdHJ1bWVudGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6
OmNyZWF0ZSgpLnNldE5hbWUoIkluc3RydW1lbnRlZE9iamVjdHNDb3VudCIpOwotICAgICAgICAg
ICAgdG90YWxJbnN0cnVtZW50ZWQtPnNldFNpemUobV9jbGllbnQtPnRvdGFsQ291bnRlZE9iamVj
dHMoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gaW5jb3Jy
ZWN0bHlJbnN0cnVtZW50ZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFt
ZSgiSW5zdHJ1bWVudGVkQnV0Tm90QWxsb2NhdGVkT2JqZWN0c0NvdW50Iik7Ci0gICAgICAgICAg
ICBpbmNvcnJlY3RseUluc3RydW1lbnRlZC0+c2V0U2l6ZShtX2NsaWVudC0+dG90YWxPYmplY3Rz
Tm90SW5BbGxvY2F0ZWRTZXQoKSk7Ci0KLSAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKHRv
dGFsSW5zdHJ1bWVudGVkKTsKLSAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluY29ycmVj
dGx5SW5zdHJ1bWVudGVkKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkNsaWVudEltcGwqIG1fY2xpZW50OwogICAgIFR5cGVOYW1lVG9TaXplTWFwIG1fc2l6
ZXNNYXA7CiB9OwogCkBAIC01MjcsMjEgKzUxMSw1MiBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RG9t
VHJlZUluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCYgbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LAogICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXRNZW1vcnlDYWNoZSgpOwogfQogCi1zdGF0aWMg
dm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2tzPiBjaGlsZHJlbikKK3N0YXRpYyB2b2lkIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8o
VHlwZU5hbWVUb1NpemVNYXAqIG1lbW9yeUluZm8pCiB7CiAgICAgVmVjdG9yPE1lbW9yeVVzYWdl
U3VwcG9ydDo6Q29tcG9uZW50SW5mbz4gY29tcG9uZW50czsKICAgICBNZW1vcnlVc2FnZVN1cHBv
cnQ6Om1lbW9yeVVzYWdlQnlDb21wb25lbnRzKGNvbXBvbmVudHMpOwotICAgIGZvciAoVmVjdG9y
PE1lbW9yeVVzYWdlU3VwcG9ydDo6Q29tcG9uZW50SW5mbz46Oml0ZXJhdG9yIGl0ID0gY29tcG9u
ZW50cy5iZWdpbigpOyBpdCAhPSBjb21wb25lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6
Y3JlYXRlKCkuc2V0TmFtZShpdC0+bV9uYW1lKTsKLSAgICAgICAgYmxvY2stPnNldFNpemUoaXQt
Pm1fc2l6ZUluQnl0ZXMpOwotICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShibG9jayk7CisgICAg
Zm9yIChWZWN0b3I8TWVtb3J5VXNhZ2VTdXBwb3J0OjpDb21wb25lbnRJbmZvPjo6aXRlcmF0b3Ig
aXQgPSBjb21wb25lbnRzLmJlZ2luKCk7IGl0ICE9IGNvbXBvbmVudHMuZW5kKCk7ICsraXQpCisg
ICAgICAgIG1lbW9yeUluZm8tPmFkZChpdC0+bV9uYW1lLCBpdC0+bV9zaXplSW5CeXRlcyk7Cit9
CisKK3N0YXRpYyB2b2lkIGFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRlYnVnRGF0YShNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsKiBjbGllbnQsIFR5cGVOYW1lVG9TaXplTWFwKiBtZW1v
cnlJbmZvKQoreworICAgIGlmIChjbGllbnQtPmNoZWNrSW5zdHJ1bWVudGVkT2JqZWN0cygpKSB7
CisgICAgICAgIG1lbW9yeUluZm8tPmFkZCgiSW5zdHJ1bWVudGVkT2JqZWN0c0NvdW50IiwgY2xp
ZW50LT50b3RhbENvdW50ZWRPYmplY3RzKCkpOworICAgICAgICBtZW1vcnlJbmZvLT5hZGQoIklu
c3RydW1lbnRlZEJ1dE5vdEFsbG9jYXRlZE9iamVjdHNDb3VudCIsIGNsaWVudC0+dG90YWxPYmpl
Y3RzTm90SW5BbGxvY2F0ZWRTZXQoKSk7CiAgICAgfQogfQogCiB2b2lkIEluc3BlY3Rvck1lbW9y
eUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgY29uc3Qg
Ym9vbCogcmVwb3J0R3JhcGgsIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4mIHByb2Nlc3NN
ZW1vcnksIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBncmFwaCkKIHsKKyAgICBUeXBlTmFtZVRv
U2l6ZU1hcCBtZW1vcnlJbmZvOworICAgIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb25Bc01h
cChyZXBvcnRHcmFwaCAmJiAqcmVwb3J0R3JhcGgsIGdyYXBoLCAmbWVtb3J5SW5mbyk7CisKKyAg
ICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yIHN0YXRzR2VuZXJhdG9yOworICAgIFJlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuID0gSW5zcGVjdG9yTWVtb3J5QmxvY2tzOjpj
cmVhdGUoKTsKKyAgICBzdGF0c0dlbmVyYXRvci5kdW1wKG1lbW9yeUluZm8sIGNoaWxkcmVuLmdl
dCgpKTsKKworICAgIHByb2Nlc3NNZW1vcnkgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRl
KCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlwZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKKyAg
ICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisKKyAgICBzaXplX3QgcHJp
dmF0ZUJ5dGVzID0gMDsKKyAgICBzaXplX3Qgc2hhcmVkQnl0ZXMgPSAwOworICAgIE1lbW9yeVVz
YWdlU3VwcG9ydDo6cHJvY2Vzc01lbW9yeVNpemVzSW5CeXRlcygmcHJpdmF0ZUJ5dGVzLCAmc2hh
cmVkQnl0ZXMpOworICAgIHByb2Nlc3NNZW1vcnktPnNldFNpemUocHJpdmF0ZUJ5dGVzKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3Rv
cik7CisgICAgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50Pjo6cmVwb3J0
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRXZWFrUG9pbnRlciht
X2luc3BlY3RvckNsaWVudCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9wYWdlKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbkFzTWFw
KGJvb2wgcmVwb3J0R3JhcGgsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBncmFwaCwgVHlwZU5h
bWVUb1NpemVNYXAqIG1lbW9yeUluZm8pCit7CiAgICAgT3duUHRyPEhlYXBHcmFwaFNlcmlhbGl6
ZXI+IGdyYXBoU2VyaWFsaXplcjsKLSAgICBpZiAocmVwb3J0R3JhcGggJiYgKnJlcG9ydEdyYXBo
KQorICAgIGlmIChyZXBvcnRHcmFwaCkKICAgICAgICAgZ3JhcGhTZXJpYWxpemVyID0gYWRvcHRQ
dHIobmV3IEhlYXBHcmFwaFNlcmlhbGl6ZXIoKSk7CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Q2xpZW50SW1wbCBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQoZ3JhcGhTZXJpYWxpemVyLmdl
dCgpKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+Z2V0QWxsb2NhdGVkT2JqZWN0cyhtZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnQuYWxsb2NhdGVkT2JqZWN0cygpKTsKQEAgLTU1NCw5ICs1Njks
NiBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbAogICAgIFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpyZXBvcnRTdGF0aWNNZW1iZXJzTWVtb3J5VXNhZ2UoJm1lbW9yeUluc3RydW1lbnRh
dGlvbik7CiAgICAgV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U3RhdGljTWVt
YmVyc01lbW9yeVVzYWdlKCZtZW1vcnlJbnN0cnVtZW50YXRpb24pOwogCi0gICAgUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNy
ZWF0ZSgpOwotICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oY2hpbGRyZW4pOwotCiAgICAg
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QodGhpcyk7CiAgICAgbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QobWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKICAgICBt
ZW1vcnlJbnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnQpOwpAQCAtNTY3LDI0ICs1NzksOSBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojpn
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbAogCiAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmR1bXBVbmNvdW50ZWRBbGxvY2F0ZWRPYmplY3RzKG1lbW9y
eUluc3RydW1lbnRhdGlvbkNsaWVudC5jb3VudGVkT2JqZWN0cygpKTsKIAotICAgIE1lbW9yeVVz
YWdlU3RhdHNHZW5lcmF0b3Igc3RhdHNHZW5lcmF0b3IoJm1lbW9yeUluc3RydW1lbnRhdGlvbkNs
aWVudCk7Ci0gICAgc3RhdHNHZW5lcmF0b3IuZHVtcChjaGlsZHJlbi5nZXQoKSk7Ci0KLSAgICBw
cm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoV2Vi
Q29yZU1lbW9yeVR5cGVzOjpQcm9jZXNzUHJpdmF0ZU1lbW9yeSk7Ci0gICAgcHJvY2Vzc01lbW9y
eS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotCi0gICAgc2l6ZV90IHByaXZhdGVCeXRlcyA9IDA7
Ci0gICAgc2l6ZV90IHNoYXJlZEJ5dGVzID0gMDsKLSAgICBNZW1vcnlVc2FnZVN1cHBvcnQ6OnBy
b2Nlc3NNZW1vcnlTaXplc0luQnl0ZXMoJnByaXZhdGVCeXRlcywgJnNoYXJlZEJ5dGVzKTsKLSAg
ICBwcm9jZXNzTWVtb3J5LT5zZXRTaXplKHByaXZhdGVCeXRlcyk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpJbnNwZWN0b3IpOwotICAgIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD46OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9pbnNwZWN0b3JDbGll
bnQpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZSk7CisgICAgKm1lbW9yeUluZm8gPSBtZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnQuc2l6ZXNNYXAoKTsKKyAgICBhZGRQbGF0Zm9ybUNvbXBv
bmVudHNJbmZvKG1lbW9yeUluZm8pOworICAgIGFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRlYnVn
RGF0YSgmbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LCBtZW1vcnlJbmZvKTsKIH0KIAogSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0
b3JDb21wb3NpdGVTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDE0N2NmZGEzMDhmZDAxZTVm
MjVhOGEyOWQ1ZjU3ZjE1Zjc0YWU5NGUuLmVjNTljNzg1Mjc3NTE5OWQ4OTE2MWI3NDRjNjk4MjNi
YzcxNjY1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICB2b2lkIGdl
dFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb25Bc01hcChib29sIHJlcG9ydEdyYXBoLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgZ3JhcGgsIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+KiBtZW1vcnlJ
bmZvKTsKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqLCBQYWdl
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkNWMzNDYyNmU3NzljOWQ5Y2I5
NzhkZDM4YWRlMTkwZDg5ZTZmMGVjLi4zNTNkNzk0NWIzMTk1MGNmMGU5OTMzNTE4MTlmMDk5MTRl
YTM0MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yMDQsNiArMjA0LDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVudUl0ZW1JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTmF2aWdhdGlvblR5
cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xz
QWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQu
aAppbmRleCAxZThkMzJkYmYyYTRjOTI3ZDI2ZjVjM2M1OTJlODUyYThiMzQ2MGQxLi40Y2NmYjVh
NjMyNjYxNjNmZDA4MjE3OGY1Y2VkMjM0MTFhNGNjMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
ZGVmaW5lIFdlYkRldlRvb2xzQWdlbnRfaAogCiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBXZWJVUkxS
ZXNwb25zZTsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsK
IHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJNZW1vcnlVc2FnZUluZm87CiBzdHJ1Y3QgV2Vi
VVJMRXJyb3I7CiAKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnQgewpAQCAtNzUsNiArNzcsOCBAQCBw
dWJsaWM6CiAgICAgLy8gRXhwb3NlZCBmb3IgVGVzdFJ1bm5lci4KICAgICB2aXJ0dWFsIHZvaWQg
ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgV2ViU3RyaW5nJiBzY3Jp
cHQpID0gMDsKIAorICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4gcHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0ID0gMDsKKwogICAgIGNsYXNzIE1lc3NhZ2VE
ZXNjcmlwdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VEZXNjcmlw
dG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJN
ZW1vcnlVc2FnZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbW9y
eVVzYWdlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTUyMTU4YjYyYjMzNTkwYmI5NjM0YzMwNTkxNDk4
ZDJiOGIwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZW1vcnlVc2FnZUluZm8uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJNZW1vcnlVc2FnZUluZm9faAorI2RlZmluZSBXZWJNZW1vcnlVc2FnZUluZm9faAorCisj
aW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYk1lbW9yeVVzYWdlSW5mbyB7CisgICAg
V2ViTWVtb3J5VXNhZ2VJbmZvKGNvbnN0IFdlYlN0cmluZyYgYWxsb2NhdG9yLCBzaXplX3QgYWxs
b2NhdGVkKQorICAgICAgICA6IGFsbG9jYXRvck5hbWUoYWxsb2NhdG9yKQorICAgICAgICAsIGFs
bG9jYXRlZEJ5dGVzKGFsbG9jYXRlZCkKKyAgICB7CisgICAgfQorCisgICAgV2ViTWVtb3J5VXNh
Z2VJbmZvKCkKKyAgICAgICAgOiBhbGxvY2F0ZWRCeXRlcygwKQorICAgIHsKKyAgICB9CisKKyAg
ICBXZWJTdHJpbmcgYWxsb2NhdG9yTmFtZTsKKyAgICBzaXplX3QgYWxsb2NhdGVkQnl0ZXM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lbW9yeVVzYWdlSW5m
b19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHAKaW5kZXggYTU1MjU5ZDAzY2Y5ZTMyMzZhYWFhNTljODYxYjI0YzZjYWFiZWI0OS4u
Y2IxNzQ1ZWEwMzJkODRiZDdhYTdkMjQwY2NmYjM2Njg0ODA1MTJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJEZXZU
b29sc0FnZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAi
V2ViTWVtb3J5VXNhZ2VJbmZvLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1
ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CkBAIC02MzUs
NiArNjM2LDE2IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnBhaW50UGFnZU92ZXJsYXko
V2ViQ2FudmFzKiBjYW52YXMpCiAgICAgfQogfQogCitXZWJWZWN0b3I8V2ViTWVtb3J5VXNhZ2VJ
bmZvPiBXZWJEZXZUb29sc0FnZW50SW1wbDo6cHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNv
bnN0Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gbWVtb3J5SW5mbyA9IG1fd2ViVmll
d0ltcGwtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5nZXRQcm9jZXNzTWVtb3J5RGlz
dHJpYnV0aW9uKCk7CisgICAgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4gbWVtb3J5SW5m
b1ZlY3Rvcigoc2l6ZV90KW1lbW9yeUluZm8uc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7Cisg
ICAgZm9yIChIYXNoTWFwPFN0cmluZywgc2l6ZV90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtZW1v
cnlJbmZvLmJlZ2luKCk7IGl0ICE9IG1lbW9yeUluZm8uZW5kKCk7ICsraXQpCisgICAgICAgIG1l
bW9yeUluZm9WZWN0b3JbaSsrXSA9IFdlYk1lbW9yeVVzYWdlSW5mbyhpdC0+a2V5LCBpdC0+dmFs
dWUpOworICAgIHJldHVybiBtZW1vcnlJbmZvVmVjdG9yOworfQorCiB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpoaWdobGlnaHQoKQogewogICAgIG1fd2ViVmlld0ltcGwtPmFkZFBhZ2VPdmVy
bGF5KHRoaXMsIE92ZXJsYXlaT3JkZXJzOjpoaWdobGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggZTBmMmIxNGFiYjU3
MmJiMzM4YWE0NWViM2JjMmM4YTRmODM2OWExYi4uZmUzNDBkZDc3ODhkYmJhOGFlNDEyNzVkMGY5
ZjQzMmU2NDdkODgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oCkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIFdlYlN0cmluZzsKIGNs
YXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJVUkxSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdJ
bXBsOworc3RydWN0IFdlYk1lbW9yeVVzYWdlSW5mbzsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0
cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogCkBAIC0xMTcsNiArMTE4LDggQEAgcHVibGlj
OgogICAgIC8vIFdlYlBhZ2VPdmVybGF5CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UGFnZU92ZXJs
YXkoV2ViQ2FudmFzKik7CiAKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJNZW1vcnlVc2FnZUlu
Zm8+IHByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAv
LyBXZWJUaHJlYWQ6OlRhc2tPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vzc1Rh
c2soKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184729</attachid>
            <date>2013-01-25 05:04:56 -0800</date>
            <delta_ts>2013-01-25 07:31:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130125140147.patch</filename>
            <type>text/plain</type>
            <size>18886</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM5MzlkNjIxN2RjOGEw
YTk3OGQ1MjQwNjg0MTM2MmNkZmMwYTg4ZS4uZGJlN2Y3ZDI2ZjljYWM5OTBiZjVkZGNiZWZiMTg4
YjBkMzdkYWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTI1ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gQVBJIGZv
ciByZXRyaWV2aW5nIG5hdGl2ZSBtZW1vcnkgaW5mb3JtYXRpb24gd2l0aG91dCBnb2luZyB0aHJv
dWdoIHRoZSByZW1vdGUgaW5zcGVjdGluZyBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBmdW5jdGlvbmFsIGNo
YW5nZXMsIG9ubHkgQVBJIHBsdW1iaW5nKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGxhdGZv
cm1Db21wb25lbnRzSW5mbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRlYnVnRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlE
aXN0cmlidXRpb25Bc01hcCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisKIDIwMTMtMDEtMjUgIFNl
cmdleSBSeWF6YW5vdiAgPHNlcnlhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBBZGQgZXhwbGFuYXRpb24gZm9yIENvbnNvbGUgb2JqZWN0IGV4cGFuc2lvbiBiZWhhdmlv
dXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjc3ODM1Zjk2Y2Y3Njc5YzgyOWJlNjFj
ZDIzNGY3YzEwOGFiZDhiZi4uZDUzZTQyNTIzMjY3ZTEyNzYzNGNmMDllYTcxZjgwMGZkOGMxMDU2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wMS0y
NSAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGFu
IEFQSSBmb3IgcmV0cmlldmluZyBuYXRpdmUgbWVtb3J5IGluZm9ybWF0aW9uIHdpdGhvdXQgZ29p
bmcgdGhyb3VnaCB0aGUgcmVtb3RlIGluc3BlY3RpbmcgcHJvdG9jb2wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzY1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYkRldlRvb2xzQWdlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJNZW1vcnlVc2FnZUluZm8u
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlV
c2FnZUluZm86OldlYk1lbW9yeVVzYWdlSW5mbyk6CisgICAgICAgIChXZWJNZW1vcnlVc2FnZUlu
Zm8pOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpwcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRGV2VG9vbHNBZ2VudEltcGwpOgorCiAy
MDEzLTAxLTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwNzc0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDJlNWU1ZDNhNWZk
MTU5MmU3Mjg3NjhjYzkyYjdlM2RhYTViMDIzZTYuLjE3Njg5MjkzY2I2MDYyOGVkMjdhNDExM2Vi
YTE1NTJiYjc5MjRjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTExOSw3ICsxMTksMTEgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckMKICAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBkb21TdG9yYWdlQWdl
bnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KiBkb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxlYXNlKCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgaW5zcGVjdG9yQ2xpZW50LCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UpKTsKKworICAgIE93
blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gbWVtb3J5QWdlbnRQdHIoSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGluc3BlY3RvckNsaWVu
dCwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdlKSk7CisgICAgbV9tZW1vcnlBZ2VudCA9IG1lbW9yeUFn
ZW50UHRyLmdldCgpOworICAgIG1fYWdlbnRzLmFwcGVuZChtZW1vcnlBZ2VudFB0ci5yZWxlYXNl
KCkpOworCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNyZWF0
ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2VBZ2VudCwgbV9zdGF0ZS5nZXQoKSwg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6UGFnZUluc3BlY3RvciwKICAgICAgICBpbnNwZWN0b3JD
bGllbnQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBw
YWdlQWdlbnQpKTsKQEAgLTQzOCw2ICs0NDIsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRQcm9jZXNzVGFzaygpCiAjZW5kaWYKIH0KIAorSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4g
SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0
Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gbWVtb3J5SW5mbzsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBncmFwaDsKKyAgICBtX21lbW9yeUFnZW50LT5nZXRQcm9jZXNzTWVt
b3J5RGlzdHJpYnV0aW9uQXNNYXAoMCwgZ3JhcGgsICZtZW1vcnlJbmZvKTsKKyAgICByZXR1cm4g
bWVtb3J5SW5mbzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCmluZGV4IGExOGE4OTg1NmRjMGQ0ZTFkMzUwMDVmZWRhZmEwMmIyY2UyNThmNzcu
LmIyMzUzNWVhOWEwMDBiMGVjMWQzNDQ4MmM3ZDJkNjdhOTg3YTdiMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNTYsNiArNTYsNyBA
QCBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50OwogY2xhc3MgSW5zcGVjdG9yT3Zl
cmxheTsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ7CkBAIC0xMjQsNiArMTI1LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFByb2Nlc3NU
YXNrKCk7CiAgICAgdm9pZCBkaWRQcm9jZXNzVGFzaygpOwogCisgICAgSGFzaE1hcDxTdHJpbmcs
IHNpemVfdD4gZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0OworCiBwcml2YXRl
OgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSosIEluc3BlY3RvckNsaWVudCopOwogCkBA
IC0xMzksNiArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21B
Z2VudDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX3Jlc291cmNlQWdlbnQ7CiAgICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKKyAgICBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dCogbV9tZW1vcnlBZ2VudDsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCogbV9kb21EZWJ1Z2dlckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggYjMwNWMwODQxZDViYTcw
ODM0NjEzOWE4ODcwMTEwMzQ2ZGUyMmQ2Mi4uYzQ4YzFmNjc3NzdjNTNhMzFhNjExOTEyN2IzMTA3
MmIxNTNiODFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwCkBAIC04MSwxMSArODEsMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3Mg
TWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvciB7CiBwdWJsaWM6Ci0gICAgTWVtb3J5VXNhZ2VTdGF0
c0dlbmVyYXRvcihNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKiBjbGllbnQpIDogbV9j
bGllbnQoY2xpZW50KSB7IH0KKyAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yKCkgeyB9CiAK
LSAgICB2b2lkIGR1bXAoSW5zcGVjdG9yTWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKKyAgICB2b2lk
IGR1bXAoY29uc3QgVHlwZU5hbWVUb1NpemVNYXAmIHNpemVzTWFwLCBJbnNwZWN0b3JNZW1vcnlC
bG9ja3MqIGNoaWxkcmVuKQogICAgIHsKLSAgICAgICAgbV9zaXplc01hcCA9IG1fY2xpZW50LT5z
aXplc01hcCgpOworICAgICAgICBtX3NpemVzTWFwID0gc2l6ZXNNYXA7CiAKICAgICAgICAgLy8g
RklYTUU6IFdlIGZpbHRlciBvdXQgUmVuZGVyaW5nIHR5cGUgYmVjYXVzZSB0aGUgY292ZXJhZ2Ug
aXMgbm90IGdvb2QgZW5vdWdoIGF0IHRoZSBtb21lbnQKICAgICAgICAgLy8gYW5kIHJlcG9ydCBS
ZW5kZXJBcmVuYSBzaXplIGluc3RlYWQuCkBAIC0xMDksNyArMTA5LDYgQEAgcHVibGljOgogICAg
ICAgICB3aGlsZSAoaW5kZXggPCBvYmplY3RUeXBlcy5zaXplKCkpCiAgICAgICAgICAgICBpbmRl
eCA9IGJ1aWxkT2JqZWN0Rm9ySW5kZXgoaW5kZXgsIG9iamVjdFR5cGVzLCBjaGlsZHJlbik7CiAK
LSAgICAgICAgYWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKGNoaWxkcmVuKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xNDcsMjEgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBpbmRleDsKICAgICB9CiAKLSAgICB2b2lkIGFkZE1lbW9yeUluc3RydW1lbnRhdGlvbkRl
YnVnRGF0YShJbnNwZWN0b3JNZW1vcnlCbG9ja3MqIGNoaWxkcmVuKQotICAgIHsKLSAgICAgICAg
aWYgKG1fY2xpZW50LT5jaGVja0luc3RydW1lbnRlZE9iamVjdHMoKSkgewotICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiB0b3RhbEluc3RydW1lbnRlZCA9IEluc3BlY3Rv
ck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKCJJbnN0cnVtZW50ZWRPYmplY3RzQ291bnQi
KTsKLSAgICAgICAgICAgIHRvdGFsSW5zdHJ1bWVudGVkLT5zZXRTaXplKG1fY2xpZW50LT50b3Rh
bENvdW50ZWRPYmplY3RzKCkpOwotCi0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGluY29ycmVjdGx5SW5zdHJ1bWVudGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNy
ZWF0ZSgpLnNldE5hbWUoIkluc3RydW1lbnRlZEJ1dE5vdEFsbG9jYXRlZE9iamVjdHNDb3VudCIp
OwotICAgICAgICAgICAgaW5jb3JyZWN0bHlJbnN0cnVtZW50ZWQtPnNldFNpemUobV9jbGllbnQt
PnRvdGFsT2JqZWN0c05vdEluQWxsb2NhdGVkU2V0KCkpOwotCi0gICAgICAgICAgICBjaGlsZHJl
bi0+YWRkSXRlbSh0b3RhbEluc3RydW1lbnRlZCk7Ci0gICAgICAgICAgICBjaGlsZHJlbi0+YWRk
SXRlbShpbmNvcnJlY3RseUluc3RydW1lbnRlZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBN
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKiBtX2NsaWVudDsKICAgICBUeXBlTmFtZVRv
U2l6ZU1hcCBtX3NpemVzTWFwOwogfTsKIApAQCAtNTI3LDIxICs1MTEsNTIgQEAgc3RhdGljIHZv
aWQgY29sbGVjdERvbVRyZWVJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwmIG1lbW9yeUlu
c3RydW1lbnRhdGlvbiwKICAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0TWVtb3J5Q2FjaGUoKTsK
IH0KIAotc3RhdGljIHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRyZW4pCitzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNv
bXBvbmVudHNJbmZvKFR5cGVOYW1lVG9TaXplTWFwKiBtZW1vcnlJbmZvKQogewogICAgIFZlY3Rv
cjxNZW1vcnlVc2FnZVN1cHBvcnQ6OkNvbXBvbmVudEluZm8+IGNvbXBvbmVudHM7CiAgICAgTWVt
b3J5VXNhZ2VTdXBwb3J0OjptZW1vcnlVc2FnZUJ5Q29tcG9uZW50cyhjb21wb25lbnRzKTsKLSAg
ICBmb3IgKFZlY3RvcjxNZW1vcnlVc2FnZVN1cHBvcnQ6OkNvbXBvbmVudEluZm8+OjppdGVyYXRv
ciBpdCA9IGNvbXBvbmVudHMuYmVnaW4oKTsgaXQgIT0gY29tcG9uZW50cy5lbmQoKTsgKytpdCkg
ewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJsb2NrID0gSW5zcGVjdG9y
TWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoaXQtPm1fbmFtZSk7Ci0gICAgICAgIGJsb2Nr
LT5zZXRTaXplKGl0LT5tX3NpemVJbkJ5dGVzKTsKLSAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0o
YmxvY2spOworICAgIGZvciAoVmVjdG9yPE1lbW9yeVVzYWdlU3VwcG9ydDo6Q29tcG9uZW50SW5m
bz46Oml0ZXJhdG9yIGl0ID0gY29tcG9uZW50cy5iZWdpbigpOyBpdCAhPSBjb21wb25lbnRzLmVu
ZCgpOyArK2l0KQorICAgICAgICBtZW1vcnlJbmZvLT5hZGQoaXQtPm1fbmFtZSwgaXQtPm1fc2l6
ZUluQnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1
Z0RhdGEoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCogY2xpZW50LCBUeXBlTmFtZVRv
U2l6ZU1hcCogbWVtb3J5SW5mbykKK3sKKyAgICBpZiAoY2xpZW50LT5jaGVja0luc3RydW1lbnRl
ZE9iamVjdHMoKSkgeworICAgICAgICBtZW1vcnlJbmZvLT5hZGQoIkluc3RydW1lbnRlZE9iamVj
dHNDb3VudCIsIGNsaWVudC0+dG90YWxDb3VudGVkT2JqZWN0cygpKTsKKyAgICAgICAgbWVtb3J5
SW5mby0+YWRkKCJJbnN0cnVtZW50ZWRCdXROb3RBbGxvY2F0ZWRPYmplY3RzQ291bnQiLCBjbGll
bnQtPnRvdGFsT2JqZWN0c05vdEluQWxsb2NhdGVkU2V0KCkpOwogICAgIH0KIH0KIAogdm9pZCBJ
bnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0
cmluZyosIGNvbnN0IGJvb2wqIHJlcG9ydEdyYXBoLCBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+JiBwcm9jZXNzTWVtb3J5LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZ3JhcGgpCiB7Cisg
ICAgVHlwZU5hbWVUb1NpemVNYXAgbWVtb3J5SW5mbzsKKyAgICBnZXRQcm9jZXNzTWVtb3J5RGlz
dHJpYnV0aW9uQXNNYXAocmVwb3J0R3JhcGggJiYgKnJlcG9ydEdyYXBoLCBncmFwaCwgJm1lbW9y
eUluZm8pOworCisgICAgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvciBzdGF0c0dlbmVyYXRvcjsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1l
bW9yeUJsb2Nrczo6Y3JlYXRlKCk7CisgICAgc3RhdHNHZW5lcmF0b3IuZHVtcChtZW1vcnlJbmZv
LCBjaGlsZHJlbi5nZXQoKSk7CisKKyAgICBwcm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9yTWVtb3J5
QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoV2ViQ29yZU1lbW9yeVR5cGVzOjpQcm9jZXNzUHJpdmF0
ZU1lbW9yeSk7CisgICAgcHJvY2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworCisg
ICAgc2l6ZV90IHByaXZhdGVCeXRlcyA9IDA7CisgICAgc2l6ZV90IHNoYXJlZEJ5dGVzID0gMDsK
KyAgICBNZW1vcnlVc2FnZVN1cHBvcnQ6OnByb2Nlc3NNZW1vcnlTaXplc0luQnl0ZXMoJnByaXZh
dGVCeXRlcywgJnNoYXJlZEJ5dGVzKTsKKyAgICBwcm9jZXNzTWVtb3J5LT5zZXRTaXplKHByaXZh
dGVCeXRlcyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpJbnNwZWN0b3IpOworICAgIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlB
Z2VudD46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRk
V2Vha1BvaW50ZXIobV9pbnNwZWN0b3JDbGllbnQpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcGFn
ZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb25Bc01hcChib29sIHJlcG9ydEdyYXBoLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
Z3JhcGgsIFR5cGVOYW1lVG9TaXplTWFwKiBtZW1vcnlJbmZvKQorewogICAgIE93blB0cjxIZWFw
R3JhcGhTZXJpYWxpemVyPiBncmFwaFNlcmlhbGl6ZXI7Ci0gICAgaWYgKHJlcG9ydEdyYXBoICYm
ICpyZXBvcnRHcmFwaCkKKyAgICBpZiAocmVwb3J0R3JhcGgpCiAgICAgICAgIGdyYXBoU2VyaWFs
aXplciA9IGFkb3B0UHRyKG5ldyBIZWFwR3JhcGhTZXJpYWxpemVyKCkpOwogICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudEltcGwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50KGdyYXBo
U2VyaWFsaXplci5nZXQoKSk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmdldEFsbG9jYXRlZE9i
amVjdHMobWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LmFsbG9jYXRlZE9iamVjdHMoKSk7CkBA
IC01NTQsOSArNTY5LDYgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01l
bW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIGNvbnN0IGJvb2wKICAgICBQbGF0Zm9ybU1l
bW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U3RhdGljTWVtYmVyc01lbW9yeVVzYWdlKCZtZW1v
cnlJbnN0cnVtZW50YXRpb24pOwogICAgIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb246OnJl
cG9ydFN0YXRpY01lbWJlcnNNZW1vcnlVc2FnZSgmbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuID0gSW5zcGVjdG9yTWVt
b3J5QmxvY2tzOjpjcmVhdGUoKTsKLSAgICBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKGNoaWxk
cmVuKTsKLQogICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KHRoaXMpOwog
ICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi5hZGRSb290T2JqZWN0KG1lbW9yeUluc3RydW1lbnRh
dGlvbik7CiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QobWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50KTsKQEAgLTU2NywyNCArNTc5LDkgQEAgdm9pZCBJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIGNv
bnN0IGJvb2wKIAogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kdW1wVW5jb3VudGVkQWxsb2NhdGVk
T2JqZWN0cyhtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQuY291bnRlZE9iamVjdHMoKSk7CiAK
LSAgICBNZW1vcnlVc2FnZVN0YXRzR2VuZXJhdG9yIHN0YXRzR2VuZXJhdG9yKCZtZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnQpOwotICAgIHN0YXRzR2VuZXJhdG9yLmR1bXAoY2hpbGRyZW4uZ2V0
KCkpOwotCi0gICAgcHJvY2Vzc01lbW9yeSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUo
KS5zZXROYW1lKFdlYkNvcmVNZW1vcnlUeXBlczo6UHJvY2Vzc1ByaXZhdGVNZW1vcnkpOwotICAg
IHByb2Nlc3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKLQotICAgIHNpemVfdCBwcml2
YXRlQnl0ZXMgPSAwOwotICAgIHNpemVfdCBzaGFyZWRCeXRlcyA9IDA7Ci0gICAgTWVtb3J5VXNh
Z2VTdXBwb3J0Ojpwcm9jZXNzTWVtb3J5U2l6ZXNJbkJ5dGVzKCZwcml2YXRlQnl0ZXMsICZzaGFy
ZWRCeXRlcyk7Ci0gICAgcHJvY2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMpOwotfQot
Ci12b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9y
KTsKLSAgICBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+OjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZFdlYWtQb2ludGVyKG1f
aW5zcGVjdG9yQ2xpZW50KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UpOworICAgICptZW1v
cnlJbmZvID0gbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50LnNpemVzTWFwKCk7CisgICAgYWRk
UGxhdGZvcm1Db21wb25lbnRzSW5mbyhtZW1vcnlJbmZvKTsKKyAgICBhZGRNZW1vcnlJbnN0cnVt
ZW50YXRpb25EZWJ1Z0RhdGEoJm1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCwgbWVtb3J5SW5m
byk7CiB9CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JDbGllbnQqIGNs
aWVudCwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCAxNDdj
ZmRhMzA4ZmQwMWU1ZjI1YThhMjlkNWY1N2YxNWY3NGFlOTRlLi5lYzU5Yzc4NTI3NzUxOTlkODkx
NjFiNzQ0YzY5ODIzYmM3MTY2NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CisgICAgdm9pZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uQXNNYXAoYm9vbCByZXBvcnRH
cmFwaCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoLCBIYXNoTWFwPFN0cmluZywgc2l6
ZV90PiogbWVtb3J5SW5mbyk7CisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNsaWVudCosIEluc3BlY3RvckNvbXBvc2l0
ZVN0YXRlKiwgUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZDVjMzQ2
MjZlNzc5YzlkOWNiOTc4ZGQzOGFkZTE5MGQ4OWU2ZjBlYy4uMzUzZDc5NDViMzE5NTBjZjBlOTkz
MzUxODE5ZjA5OTE0ZWEzNDMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjA0
LDYgKzIwNCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckFjdGlv
bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oJywKKyAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk1lbW9yeVVzYWdlSW5mby5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYk1lbnVJdGVtSW5mby5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
Yk5hdmlnYXRpb25UeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTmV0d29ya1N0
YXRlTm90aWZpZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZUb29sc0FnZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0FnZW50LmgKaW5kZXggMWU4ZDMyZGJmMmE0YzkyN2QyNmY1YzNjNTkyZTg1MmE4YjM0
NjBkMS4uNGNjZmI1YTYzMjY2MTYzZmQwODIxNzhmNWNlZDIzNDExYTRjYzM0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaApAQCAtMzIs
NiArMzIsNyBAQAogI2RlZmluZSBXZWJEZXZUb29sc0FnZW50X2gKIAogI2luY2x1ZGUgIi4uLy4u
Ly4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaCIKKyNpbmNsdWRlICIuLi8u
Li8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKQEAgLTQzLDYgKzQ0LDcgQEAg
Y2xhc3MgV2ViVVJMUmVzcG9uc2U7CiBjbGFzcyBXZWJWaWV3Owogc3RydWN0IFdlYkRldlRvb2xz
TWVzc2FnZURhdGE7CiBzdHJ1Y3QgV2ViUG9pbnQ7CitzdHJ1Y3QgV2ViTWVtb3J5VXNhZ2VJbmZv
Owogc3RydWN0IFdlYlVSTEVycm9yOwogCiBjbGFzcyBXZWJEZXZUb29sc0FnZW50IHsKQEAgLTc1
LDYgKzc3LDggQEAgcHVibGljOgogICAgIC8vIEV4cG9zZWQgZm9yIFRlc3RSdW5uZXIuCiAgICAg
dmlydHVhbCB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIGNvbnN0IFdl
YlN0cmluZyYgc2NyaXB0KSA9IDA7CiAKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJNZW1vcnlV
c2FnZUluZm8+IHByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdCA9IDA7CisKICAgICBj
bGFzcyBNZXNzYWdlRGVzY3JpcHRvciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5N
ZXNzYWdlRGVzY3JpcHRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJNZW1vcnlVc2FnZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzk1MjE1OGI2MmIzMzU5MGJi
OTYzNGMzMDU5MTQ5OGQyYjhiMDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViTWVtb3J5VXNhZ2VJbmZvX2gKKyNkZWZpbmUgV2ViTWVtb3J5VXNh
Z2VJbmZvX2gKKworI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJNZW1vcnlVc2Fn
ZUluZm8geworICAgIFdlYk1lbW9yeVVzYWdlSW5mbyhjb25zdCBXZWJTdHJpbmcmIGFsbG9jYXRv
ciwgc2l6ZV90IGFsbG9jYXRlZCkKKyAgICAgICAgOiBhbGxvY2F0b3JOYW1lKGFsbG9jYXRvcikK
KyAgICAgICAgLCBhbGxvY2F0ZWRCeXRlcyhhbGxvY2F0ZWQpCisgICAgeworICAgIH0KKworICAg
IFdlYk1lbW9yeVVzYWdlSW5mbygpCisgICAgICAgIDogYWxsb2NhdGVkQnl0ZXMoMCkKKyAgICB7
CisgICAgfQorCisgICAgV2ViU3RyaW5nIGFsbG9jYXRvck5hbWU7CisgICAgc2l6ZV90IGFsbG9j
YXRlZEJ5dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJN
ZW1vcnlVc2FnZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IGE1NTI1OWQwM2NmOWUzMjM2YWFhYTU5Yzg2MWIy
NGM2Y2FhYmViNDkuLmNiMTc0NWVhMDMyZDg0YmQ3YWE3ZDI0MGNjZmIzNjY4NDgwNTEyYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5j
bHVkZSAiV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgorI2luY2x1ZGUgIldlYk1lbW9yeVVzYWdlSW5mby5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgpAQCAtNjM1LDYgKzYzNiwxNiBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpwYWlu
dFBhZ2VPdmVybGF5KFdlYkNhbnZhcyogY2FudmFzKQogICAgIH0KIH0KIAorV2ViVmVjdG9yPFdl
Yk1lbW9yeVVzYWdlSW5mbz4gV2ViRGV2VG9vbHNBZ2VudEltcGw6OnByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oKSBjb25zdAoreworICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IG1lbW9yeUlu
Zm8gPSBtX3dlYlZpZXdJbXBsLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Z2V0UHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpOworICAgIFdlYlZlY3RvcjxXZWJNZW1vcnlVc2FnZUlu
Zm8+IG1lbW9yeUluZm9WZWN0b3IoKHNpemVfdCltZW1vcnlJbmZvLnNpemUoKSk7CisgICAgc2l6
ZV90IGkgPSAwOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbWVtb3J5SW5mby5iZWdpbigpOyBpdCAhPSBtZW1vcnlJbmZvLmVuZCgpOyArK2l0
KQorICAgICAgICBtZW1vcnlJbmZvVmVjdG9yW2krK10gPSBXZWJNZW1vcnlVc2FnZUluZm8oaXQt
PmtleSwgaXQtPnZhbHVlKTsKKyAgICByZXR1cm4gbWVtb3J5SW5mb1ZlY3RvcjsKK30KKwogdm9p
ZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aGlnaGxpZ2h0KCkKIHsKICAgICBtX3dlYlZpZXdJbXBs
LT5hZGRQYWdlT3ZlcmxheSh0aGlzLCBPdmVybGF5Wk9yZGVyczo6aGlnaGxpZ2h0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4
IGUwZjJiMTRhYmI1NzJiYjMzOGFhNDVlYjNiYzJjOGE0ZjgzNjlhMWIuLmZlMzQwZGQ3Nzg4ZGJi
YThhZTQxMjc1ZDBmOWY0MzJlNjQ3ZDg4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBX
ZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViVVJMUmVzcG9uc2U7CiBj
bGFzcyBXZWJWaWV3SW1wbDsKK3N0cnVjdCBXZWJNZW1vcnlVc2FnZUluZm87CiBzdHJ1Y3QgV2Vi
VVJMRXJyb3I7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIApAQCAtMTE3LDYgKzEx
OCw4IEBAIHB1YmxpYzoKICAgICAvLyBXZWJQYWdlT3ZlcmxheQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFBhZ2VPdmVybGF5KFdlYkNhbnZhcyopOwogCisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2Vi
TWVtb3J5VXNhZ2VJbmZvPiBwcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgLy8gV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFByb2Nlc3NUYXNrKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184749</attachid>
            <date>2013-01-25 07:31:06 -0800</date>
            <delta_ts>2013-01-28 00:55:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107651-20130125162756.patch</filename>
            <type>text/plain</type>
            <size>7074</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDI3NzgzNWY5NmNmNzY3OWM4MjliZTYxY2QyMzRmN2MxMDhhYmQ4YmYuLmQ1M2U0MjUyMzI2N2Ux
Mjc2MzRjZjA5ZWE3MWY4MDBmZDhjMTA1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTMtMDEtMjUgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEFkZCBhbiBBUEkgZm9yIHJldHJpZXZpbmcgbmF0aXZlIG1lbW9y
eSBpbmZvcm1hdGlvbiB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHJlbW90ZSBpbnNwZWN0aW5n
IHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDc2NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJEZXZUb29sc0FnZW50KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVtb3J5VXNhZ2VJbmZvOjpXZWJNZW1vcnlVc2FnZUluZm8pOgor
ICAgICAgICAoV2ViTWVtb3J5VXNhZ2VJbmZvKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6cHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YkRldlRvb2xzQWdlbnRJbXBsKToKKwogMjAxMy0wMS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE0MDc3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkNWMzNDYyNmU3NzljOWQ5
Y2I5NzhkZDM4YWRlMTkwZDg5ZTZmMGVjLi4zNTNkNzk0NWIzMTk1MGNmMGU5OTMzNTE4MTlmMDk5
MTRlYTM0MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yMDQsNiArMjA0LDcg
QEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViTWVtb3J5VXNhZ2VJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViTWVudUl0ZW1JbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTmF2aWdhdGlv
blR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmll
ci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRv
b2xzQWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdl
bnQuaAppbmRleCAxZThkMzJkYmYyYTRjOTI3ZDI2ZjVjM2M1OTJlODUyYThiMzQ2MGQxLi40Y2Nm
YjVhNjMyNjYxNjNmZDA4MjE3OGY1Y2VkMjM0MTFhNGNjMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjZGVmaW5lIFdlYkRldlRvb2xzQWdlbnRfaAogCiAjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwpAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBXZWJV
UkxSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0
YTsKIHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJNZW1vcnlVc2FnZUluZm87CiBzdHJ1Y3Qg
V2ViVVJMRXJyb3I7CiAKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnQgewpAQCAtNzUsNiArNzcsOCBA
QCBwdWJsaWM6CiAgICAgLy8gRXhwb3NlZCBmb3IgVGVzdFJ1bm5lci4KICAgICB2aXJ0dWFsIHZv
aWQgZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgV2ViU3RyaW5nJiBz
Y3JpcHQpID0gMDsKIAorICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4g
cHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigpIGNvbnN0ID0gMDsKKwogICAgIGNsYXNzIE1lc3Nh
Z2VEZXNjcmlwdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VEZXNj
cmlwdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZW1vcnlVc2FnZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
bW9yeVVzYWdlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTUyMTU4YjYyYjMzNTkwYmI5NjM0YzMwNTkx
NDk4ZDJiOGIwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJNZW1vcnlVc2FnZUluZm8uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJNZW1vcnlVc2FnZUluZm9faAorI2RlZmluZSBXZWJNZW1vcnlVc2FnZUluZm9faAor
CisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYk1lbW9yeVVzYWdlSW5mbyB7Cisg
ICAgV2ViTWVtb3J5VXNhZ2VJbmZvKGNvbnN0IFdlYlN0cmluZyYgYWxsb2NhdG9yLCBzaXplX3Qg
YWxsb2NhdGVkKQorICAgICAgICA6IGFsbG9jYXRvck5hbWUoYWxsb2NhdG9yKQorICAgICAgICAs
IGFsbG9jYXRlZEJ5dGVzKGFsbG9jYXRlZCkKKyAgICB7CisgICAgfQorCisgICAgV2ViTWVtb3J5
VXNhZ2VJbmZvKCkKKyAgICAgICAgOiBhbGxvY2F0ZWRCeXRlcygwKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJTdHJpbmcgYWxsb2NhdG9yTmFtZTsKKyAgICBzaXplX3QgYWxsb2NhdGVkQnl0ZXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lbW9yeVVzYWdl
SW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5jcHAKaW5kZXggYTU1MjU5ZDAzY2Y5ZTMyMzZhYWFhNTljODYxYjI0YzZjYWFiZWI0
OS4uZjU0MTUyYmYzNjEyZWJiOWU0ZDVjZjZmM2U1MDY4ZDhlOWE2MjhmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAt
NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJE
ZXZUb29sc0FnZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViTWVtb3J5VXNhZ2VJbmZvLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CkBAIC02
MzUsNiArNjM2LDE2IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnBhaW50UGFnZU92ZXJs
YXkoV2ViQ2FudmFzKiBjYW52YXMpCiAgICAgfQogfQogCitXZWJWZWN0b3I8V2ViTWVtb3J5VXNh
Z2VJbmZvPiBXZWJEZXZUb29sc0FnZW50SW1wbDo6cHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbigp
IGNvbnN0Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gbWVtb3J5SW5mbyA9IG1fd2Vi
Vmlld0ltcGwtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wcm9jZXNzTWVtb3J5RGlz
dHJpYnV0aW9uKCk7CisgICAgV2ViVmVjdG9yPFdlYk1lbW9yeVVzYWdlSW5mbz4gbWVtb3J5SW5m
b1ZlY3Rvcigoc2l6ZV90KW1lbW9yeUluZm8uc2l6ZSgpKTsKKyAgICBzaXplX3QgaSA9IDA7Cisg
ICAgZm9yIChIYXNoTWFwPFN0cmluZywgc2l6ZV90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtZW1v
cnlJbmZvLmJlZ2luKCk7IGl0ICE9IG1lbW9yeUluZm8uZW5kKCk7ICsraXQpCisgICAgICAgIG1l
bW9yeUluZm9WZWN0b3JbaSsrXSA9IFdlYk1lbW9yeVVzYWdlSW5mbyhpdC0+a2V5LCBpdC0+dmFs
dWUpOworICAgIHJldHVybiBtZW1vcnlJbmZvVmVjdG9yOworfQorCiB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpoaWdobGlnaHQoKQogewogICAgIG1fd2ViVmlld0ltcGwtPmFkZFBhZ2VPdmVy
bGF5KHRoaXMsIE92ZXJsYXlaT3JkZXJzOjpoaWdobGlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggZTBmMmIxNGFiYjU3
MmJiMzM4YWE0NWViM2JjMmM4YTRmODM2OWExYi4uZmUzNDBkZDc3ODhkYmJhOGFlNDEyNzVkMGY5
ZjQzMmU2NDdkODgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oCkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIFdlYlN0cmluZzsKIGNs
YXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJVUkxSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdJ
bXBsOworc3RydWN0IFdlYk1lbW9yeVVzYWdlSW5mbzsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0
cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogCkBAIC0xMTcsNiArMTE4LDggQEAgcHVibGlj
OgogICAgIC8vIFdlYlBhZ2VPdmVybGF5CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UGFnZU92ZXJs
YXkoV2ViQ2FudmFzKik7CiAKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJNZW1vcnlVc2FnZUlu
Zm8+IHByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAv
LyBXZWJUaHJlYWQ6OlRhc2tPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vzc1Rh
c2soKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>