<?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>68434</bug_id>
          
          <creation_ts>2011-09-20 06:11:04 -0700</creation_ts>
          <short_desc>[GTK] Implement cache model for WebKit2</short_desc>
          <delta_ts>2011-10-06 10:38:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67931</dependson>
    
    <dependson>69506</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>470012</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-20 06:11:04 -0700</bug_when>
    <thetext>It&apos;s currently not implemented and there isn&apos;t GTK+ API exposing it either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470013</commentid>
    <comment_count>1</comment_count>
      <attachid>107992</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-20 06:14:53 -0700</bug_when>
    <thetext>Created attachment 107992
Patch

It was already rejected by Martin in bug #67931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471482</commentid>
    <comment_count>2</comment_count>
      <attachid>107992</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-09-22 04:24:49 -0700</bug_when>
    <thetext>Comment on attachment 107992
Patch

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

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:52
&gt; +    // FIXME: The Mac port calculates these values based on the amount of physical memory that&apos;s
&gt; +    // installed on the system. Currently these values match the Mac port for users with more than
&gt; +    // 512 MB and less than 1024 MB of physical memory.

This comment does not apply anymore here because it was used for the webkit1 selection of magical values we used for the cache. If we are using the heuristics in the calculateCacheSizes function we should check if they are ok with us. I think we could active them for wk2 and check if it is doing right or wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471523</commentid>
    <comment_count>3</comment_count>
      <attachid>108325</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-22 06:24:58 -0700</bug_when>
    <thetext>Created attachment 108325
Patch

Patch implementing the FIXMEs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471613</commentid>
    <comment_count>4</comment_count>
      <attachid>108325</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-22 09:15:29 -0700</bug_when>
    <thetext>Comment on attachment 108325
Patch

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

Looks good to me. We just need another reviewer to approve the API.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:83
&gt; + * determine its caching behavior. All web views follow the cache

Should probably say all #WebkitWebViews in  #WebKitWebContext follow the cache model

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:85
&gt; + * for caching previously viewed content .

Extra space after &apos;content&apos;

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:98
&gt; +    SoupSession* session = WebCore::ResourceHandle::defaultSession();
&gt; +    SoupCache* cache = reinterpret_cast&lt;SoupCache*&gt;(soup_session_get_feature(session, SOUP_TYPE_CACHE));

Might as well move these two down above:  if (cache)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471648</commentid>
    <comment_count>5</comment_count>
      <attachid>108325</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-09-22 09:59:48 -0700</bug_when>
    <thetext>Comment on attachment 108325
Patch

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

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:71
&gt; +    guint64 totalMem = g_ascii_strtoull(ptr + strlen(&quot;MemTotal:&quot;), &amp;endPtr, 10);

Could we have strlen(&quot;MemTotal:&quot;) precalculated in a static variable? Maybe we could even use sysconf with _SC_PHYS_PAGES and _SC_PAGE_SIZE, it could be cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472087</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-22 23:17:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 108325 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108325&amp;action=review
&gt; 
&gt; Looks good to me. We just need another reviewer to approve the API.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:83
&gt; &gt; + * determine its caching behavior. All web views follow the cache
&gt; 
&gt; Should probably say all #WebkitWebViews in  #WebKitWebContext follow the cache model

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:85
&gt; &gt; + * for caching previously viewed content .
&gt; 
&gt; Extra space after &apos;content&apos;

Ok.

&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:98
&gt; &gt; +    SoupSession* session = WebCore::ResourceHandle::defaultSession();
&gt; &gt; +    SoupCache* cache = reinterpret_cast&lt;SoupCache*&gt;(soup_session_get_feature(session, SOUP_TYPE_CACHE));
&gt; 
&gt; Might as well move these two down above:  if (cache)

I need the cache to get the free disk space:

uint64_t diskFreeSize = getCacheDiskFreeSize(cache);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472104</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-09-23 00:49:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 108325 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108325&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:71
&gt; &gt; +    guint64 totalMem = g_ascii_strtoull(ptr + strlen(&quot;MemTotal:&quot;), &amp;endPtr, 10);
&gt; 
&gt; Could we have strlen(&quot;MemTotal:&quot;) precalculated in a static variable?

This code will usually be executed only once to set the cache model, so I don&apos;t think we need micro-optimizations here, but if you think it&apos;s worh it I don&apos;t mind to do it.

&gt; Maybe we could even use sysconf with _SC_PHYS_PAGES and _SC_PAGE_SIZE, it could be cleaner.

__get_phys_pages() (called by sysconf to get _SC_PHYS_PAGES) parses /proc/meminfo to get the total mem, and returns total_mem / (__getpagesize () / 1024). We are doing the same, but getting the value directly. I agree using sysconf might be cleaner, though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478597</commentid>
    <comment_count>8</comment_count>
      <attachid>108325</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-05 12:49:04 -0700</bug_when>
    <thetext>Comment on attachment 108325
Patch

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

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:54
&gt; +    g_object_get(G_OBJECT(cache), &quot;cache-dir&quot;, &amp;cacheDir.outPtr(), NULL);
&gt; +    if (!cacheDir)
&gt; +        return 0;

Would it make sense to attach a listener to this property to update WebCore when it changes?

&gt;&gt;&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:71
&gt;&gt;&gt; +    guint64 totalMem = g_ascii_strtoull(ptr + strlen(&quot;MemTotal:&quot;), &amp;endPtr, 10);
&gt;&gt; 
&gt;&gt; Could we have strlen(&quot;MemTotal:&quot;) precalculated in a static variable? Maybe we could even use sysconf with _SC_PHYS_PAGES and _SC_PAGE_SIZE, it could be cleaner.
&gt; 
&gt; This code will usually be executed only once to set the cache model, so I don&apos;t think we need micro-optimizations here, but if you think it&apos;s worh it I don&apos;t mind to do it.

Sysconf seems like it would be a lot cleaner and not Linux only. I think it&apos;d be better to ues that here if it makes sense to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478996</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-05 23:58:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 108325 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108325&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:54
&gt; &gt; +    g_object_get(G_OBJECT(cache), &quot;cache-dir&quot;, &amp;cacheDir.outPtr(), NULL);
&gt; &gt; +    if (!cacheDir)
&gt; &gt; +        return 0;
&gt; 
&gt; Would it make sense to attach a listener to this property to update WebCore when it changes?

To update what? 

&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:71
&gt; &gt;&gt;&gt; +    guint64 totalMem = g_ascii_strtoull(ptr + strlen(&quot;MemTotal:&quot;), &amp;endPtr, 10);
&gt; &gt;&gt; 
&gt; &gt;&gt; Could we have strlen(&quot;MemTotal:&quot;) precalculated in a static variable? Maybe we could even use sysconf with _SC_PHYS_PAGES and _SC_PAGE_SIZE, it could be cleaner.
&gt; &gt; 
&gt; &gt; This code will usually be executed only once to set the cache model, so I don&apos;t think we need micro-optimizations here, but if you think it&apos;s worh it I don&apos;t mind to do it.
&gt; 
&gt; Sysconf seems like it would be a lot cleaner and not Linux only. I think it&apos;d be better to ues that here if it makes sense to you.

Ok, I&apos;ll use Sysconf then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479028</commentid>
    <comment_count>10</comment_count>
      <attachid>109934</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-06 02:11:44 -0700</bug_when>
    <thetext>Created attachment 109934
Updated patch to use sysconf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479172</commentid>
    <comment_count>11</comment_count>
      <attachid>109934</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-06 08:30:25 -0700</bug_when>
    <thetext>Comment on attachment 109934
Updated patch to use sysconf

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

Looks good, but please handle the situation where sysconf returns an error before landing.

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:46
&gt; +#else
&gt; +static uint64_t kDefaultMemorySize = 512;
&gt; +#endif

I would move this down to getMemorySize.

&gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:68
&gt; +#if !OS(WINDOWS)
&gt; +    return ((sysconf(_SC_PAGESIZE) / 1024) * sysconf(_SC_PHYS_PAGES)) / 1024;
&gt; +#else
&gt; +    // Fallback to default for other platforms.

If any of these sysconf calls return -1 you need to return the default memory size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479178</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-06 08:37:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 109934 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109934&amp;action=review
&gt; 
&gt; Looks good, but please handle the situation where sysconf returns an error before landing.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:46
&gt; &gt; +#else
&gt; &gt; +static uint64_t kDefaultMemorySize = 512;
&gt; &gt; +#endif
&gt; 
&gt; I would move this down to getMemorySize.

Ok.

&gt; &gt; Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp:68
&gt; &gt; +#if !OS(WINDOWS)
&gt; &gt; +    return ((sysconf(_SC_PAGESIZE) / 1024) * sysconf(_SC_PHYS_PAGES)) / 1024;
&gt; &gt; +#else
&gt; &gt; +    // Fallback to default for other platforms.
&gt; 
&gt; If any of these sysconf calls return -1 you need to return the default memory size.

Right! Btw, this patch depends on bug #69506, it uses WEBKIT_API instead of WK_EXPORT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479268</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-06 10:38:33 -0700</bug_when>
    <thetext>Committed r96829: &lt;http://trac.webkit.org/changeset/96829&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107992</attachid>
            <date>2011-09-20 06:14:53 -0700</date>
            <delta_ts>2011-09-22 06:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cache-model.diff</filename>
            <type>text/plain</type>
            <size>10164</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0ZTgwZTVmLi4yZTE0YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTEtMDktMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjYWNoZSBtb2RlbCBmb3IgV2ViS2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0
X3NldF9jYWNoZV9tb2RlbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hl
X21vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYzoKKyAg
ICAgICAgKHRlc3RXZWJDb250ZXh0Q2FjaGVNb2RlbCk6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKTogSW1wbGVtZW50CisgICAgICAgIHBs
YXRmb3JtU2V0Q2FjaGVNb2RlbCBmb3IgR3RrIHBvcnQuCisKKzIwMTEtMDktMjAgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIFdlYlBy
b2Nlc3Mgc2hvdWxkbid0IHVzZSB0aGUgR1RLKyBBUEkKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggN2FlMWYwZC4u
ZTdjY2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTc0LDQgKzc0LDgwIEBAIFdlYktpdFdlYkNvbnRleHQq
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCh2b2lkKQogICAgIHJldHVybiBXRUJLSVRf
V0VCX0NPTlRFWFQoZ19vbmNlKCZvbmNlSW5pdCwgZ2V0RGVmYXVsdFdlYkNvbnRleHQsIDApKTsK
IH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsOgorICogQGNv
bnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dAorICogQGNhY2hlX21vZGVsOiBhICNXZWJLaXRD
YWNoZU1vZGVsCisgKgorICogU3BlY2lmaWVzIGEgdXNhZ2UgbW9kZWwgZm9yIFdlYlZpZXdzLCB3
aGljaCBXZWJLaXQgd2lsbCB1c2UgdG8KKyAqIGRldGVybWluZSBpdHMgY2FjaGluZyBiZWhhdmlv
ci4gQWxsIHdlYiB2aWV3cyBmb2xsb3cgdGhlIGNhY2hlCisgKiBtb2RlbC4gVGhpcyBjYWNoZSBt
b2RlbCBkZXRlcm1pbmVzIHRoZSBSQU0gYW5kIGRpc2sgc3BhY2UgdG8gdXNlCisgKiBmb3IgY2Fj
aGluZyBwcmV2aW91c2x5IHZpZXdlZCBjb250ZW50IC4KKyAqCisgKiBSZXNlYXJjaCBpbmRpY2F0
ZXMgdGhhdCB1c2VycyB0ZW5kIHRvIGJyb3dzZSB3aXRoaW4gY2x1c3RlcnMgb2YKKyAqIGRvY3Vt
ZW50cyB0aGF0IGhvbGQgcmVzb3VyY2VzIGluIGNvbW1vbiwgYW5kIHRvIHJldmlzaXQgcHJldmlv
dXNseQorICogdmlzaXRlZCBkb2N1bWVudHMuIFdlYktpdCBhbmQgdGhlIGZyYW1ld29ya3MgYmVs
b3cgaXQgaW5jbHVkZQorICogYnVpbHQtaW4gY2FjaGVzIHRoYXQgdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhlc2UgcGF0dGVybnMsCisgKiBzdWJzdGFudGlhbGx5IGltcHJvdmluZyBkb2N1bWVudCBsb2Fk
IHNwZWVkIGluIGJyb3dzaW5nCisgKiBzaXR1YXRpb25zLiBUaGUgV2ViS2l0IGNhY2hlIG1vZGVs
IGNvbnRyb2xzIHRoZSBiZWhhdmlvcnMgb2YgYWxsIG9mCisgKiB0aGVzZSBjYWNoZXMsIGluY2x1
ZGluZyB2YXJpb3VzIFdlYkNvcmUgY2FjaGVzLgorICoKKyAqIEJyb3dzZXJzIGNhbiBpbXByb3Zl
IGRvY3VtZW50IGxvYWQgc3BlZWQgc3Vic3RhbnRpYWxseSBieQorICogc3BlY2lmeWluZyBXRUJL
SVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIuIEFwcGxpY2F0aW9ucyB3aXRob3V0IGEKKyAqIGJy
b3dzaW5nIGludGVyZmFjZSBjYW4gcmVkdWNlIG1lbW9yeSB1c2FnZSBzdWJzdGFudGlhbGx5IGJ5
CisgKiBzcGVjaWZ5aW5nIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIuIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzCisgKiBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIuCisgKgor
ICovCit2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgV2ViS2l0Q2FjaGVNb2RlbCBtb2RlbCkKK3sKKyAgICBXS0NhY2hlTW9k
ZWwgY2FjaGVNb2RlbDsKKworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05U
RVhUKGNvbnRleHQpKTsKKworICAgIHN3aXRjaCAobW9kZWwpIHsKKyAgICBjYXNlIFdFQktJVF9D
QUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI6CisgICAgICAgIGNhY2hlTW9kZWwgPSBrV0tDYWNo
ZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0NB
Q0hFX01PREVMX1dFQl9CUk9XU0VSOgorICAgICAgICBjYWNoZU1vZGVsID0ga1dLQ2FjaGVNb2Rl
bFByaW1hcnlXZWJCcm93c2VyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9DQUNI
RV9NT0RFTF9ET0NVTUVOVF9CUk9XU0VSOgorICAgICAgICBjYWNoZU1vZGVsID0ga1dLQ2FjaGVN
b2RlbERvY3VtZW50QnJvd3NlcjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisgICAgV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OworICAgIGlmIChjYWNoZU1vZGVsICE9IFdLQ29u
dGV4dEdldENhY2hlTW9kZWwocHJpdi0+Y29udGV4dCkpCisgICAgICAgIFdLQ29udGV4dFNldENh
Y2hlTW9kZWwocHJpdi0+Y29udGV4dCwgY2FjaGVNb2RlbCk7Cit9CiAKKy8qKgorICogd2Via2l0
X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbDoKKyAqIEBjb250ZXh0OiB0aGUgI1dlYktpdFdl
YkNvbnRleHQKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGNhY2hlIG1vZGVsLiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzCisgKiB2YWx1ZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlv
biBvZiB0aGUgZnVuY3Rpb24KKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwo
KS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCAjV2ViS2l0Q2FjaGVNb2RlbAorICovCitX
ZWJLaXRDYWNoZU1vZGVsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUik7
CisKKyAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7Cisg
ICAgc3dpdGNoIChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKHByaXYtPmNvbnRleHQpKSB7CisgICAg
Y2FzZSBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI6CisgICAgICAgIHJldHVybiBXRUJLSVRf
Q0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSOworICAgIGNhc2Uga1dLQ2FjaGVNb2RlbFByaW1h
cnlXZWJCcm93c2VyOgorICAgICAgICByZXR1cm4gV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9X
U0VSOworICAgIGNhc2Uga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcjoKKyAgICAgICAgcmV0
dXJuIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9CUk9XU0VSOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIFdFQktJ
VF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAppbmRleCBjMjlmZmI2Li5lMDQ4Njc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5oCkBAIC0zMiw2ICszMiwyNiBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJ
VF9JU19XRUJfQ09OVEVYVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfQ09O
VEVYVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgV2ViS2l0V2ViQ29udGV4dENsYXNzKSkKIAorLyoKKyAq
IFdlYktpdENhY2hlTW9kZWw6CisgKiBAV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX1ZJRVdF
UjogRGlzYWJsZSB0aGUgY2FjaGUgY29tcGxldGVseSwgd2hpY2gKKyAqICAgc3Vic3RhbnRpYWxs
eSByZWR1Y2VzIG1lbW9yeSB1c2FnZS4gVXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBvbmx5
CisgKiAgIGFjY2VzcyBhIHNpbmdsZSBsb2NhbCBmaWxlLCB3aXRoIG5vIG5hdmlnYXRpb24gdG8g
b3RoZXIgcGFnZXMuIE5vIHJlbW90ZQorICogICByZXNvdXJjZXMgd2lsbCBiZSBjYWNoZWQuCisg
KiBAV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX0JST1dTRVI6IEEgY2FjaGUgbW9kZWwgb3B0
aW1pemVkIGZvciB2aWV3aW5nCisgKiAgIGEgc2VyaWVzIG9mIGxvY2FsIGZpbGVzIC0tIGZvciBl
eGFtcGxlLCBhIGRvY3VtZW50YXRpb24gdmlld2VyIG9yIGEgd2Vic2l0ZQorICogICBkZXNpZ25l
ci4gV2ViS2l0IHdpbGwgY2FjaGUgYSBtb2RlcmF0ZSBudW1iZXIgb2YgcmVzb3VyY2VzLgorICog
QFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUjogSW1wcm92ZSBkb2N1bWVudCBsb2FkIHNw
ZWVkIHN1YnN0YW50aWFsbHkKKyAqICAgYnkgY2FjaGluZyBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9m
IHJlc291cmNlcyBhbmQgcHJldmlvdXNseSB2aWV3ZWQgY29udGVudC4KKyAqCisgKiBFbnVtIHZh
bHVlcyB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUgd2VidmlldyBjYWNoZSBtb2RlbC4KKyAqLwor
dHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSLAor
ICAgIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUiwKKyAgICBXRUJLSVRfQ0FDSEVfTU9E
RUxfRE9DVU1FTlRfQlJPV1NFUgorfSBXZWJLaXRDYWNoZU1vZGVsOworCiB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dCAgICAgICAgV2ViS2l0V2ViQ29udGV4dDsKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJDb250ZXh0Q2xhc3MgICBXZWJLaXRXZWJDb250ZXh0Q2xhc3M7CiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgV2ViS2l0V2ViQ29udGV4dFByaXZh
dGU7CkBAIC01NCwxMCArNzQsMTYgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0Q2xhc3Mgewog
fTsKIAogV0tfRVhQT1JUIEdUeXBlCi13ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUgICAgKHZv
aWQpOword2Via2l0X3dlYl9jb250ZXh0X2dldF90eXBlICAgICAgICAodm9pZCk7CiAKIFdLX0VY
UE9SVCBXZWJLaXRXZWJDb250ZXh0ICoKLXdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCAo
dm9pZCk7Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQgICAgICh2b2lkKTsKKworV0tf
RVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwgKFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRDYWNoZU1vZGVsICBjYWNoZV9tb2RlbCk7CitXS19FWFBPUlQgV2ViS2l0Q2FjaGVNb2Rl
bAord2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbCAoV2ViS2l0V2ViQ29udGV4dCAq
Y29udGV4dCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJjb250ZXh0LmMgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2ViY29udGV4dC5jCmluZGV4IDY1Y2JiN2EuLjRj
NjhlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJjb250ZXh0LmMKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvdGVzdHdlYmNvbnRleHQuYwpAQCAtMjQsNyArMjQsMjQgQEAKIHN0YXRpYyB2b2lkIHRl
c3RXZWJDb250ZXh0RGVmYXVsdCh2b2lkKQogewogICAgIC8qIENoZWNrIHRoZXJlJ3MgYSBzaW5n
bGUgaW5zdGFuY2Ugb2YgdGhlIGRlZmF1bHQgd2ViIGNvbnRleHQuICovCi0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KGNvbnRleHQpID09IHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdChjb250ZXh0KSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250
ZXh0X2dldF9kZWZhdWx0KCkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dENhY2hlTW9kZWwodm9pZCkKK3sKKyAgICBX
ZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0
KCk7CisKKyAgICAvKiBDaGVjayBkZWZhdWx0IGNhY2hlIG1vZGVsIGlzIHdlYiBicm93c2VyLiAq
LworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwoY29udGV4
dCkgPT0gV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSKTsKKworICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfY2FjaGVfbW9kZWwoY29udGV4dCwgV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VN
RU5UX1ZJRVdFUik7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9t
b2RlbChjb250ZXh0KSA9PSBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSKTsKKwor
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoY29udGV4dCwgV0VCS0lUX0NB
Q0hFX01PREVMX0RPQ1VNRU5UX0JST1dTRVIpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfY2FjaGVfbW9kZWwoY29udGV4dCkgPT0gV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VN
RU5UX0JST1dTRVIpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbChj
b250ZXh0LCBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIpOworICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwoY29udGV4dCkgPT0gV0VCS0lUX0NBQ0hF
X01PREVMX1dFQl9CUk9XU0VSKTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQpAQCAtMzUsNiArNTIsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAg
Z190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKICAgICBnX3Rlc3Rf
YWRkX2Z1bmMoIi93ZWJraXQyL3dlYmNvbnRleHQvZGVmYXVsdF9jb250ZXh0IiwKICAgICAgICAg
ICAgICAgICAgICAgdGVzdFdlYkNvbnRleHREZWZhdWx0KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMo
Ii93ZWJraXQyL3dlYmNvbnRleHQvY2FjaGVfbW9kZWwiLAorICAgICAgICAgICAgICAgICAgICB0
ZXN0V2ViQ29udGV4dENhY2hlTW9kZWwpOwogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4oKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc0d0ay5jcHAKaW5k
ZXggNzcwODhhMy4uOTExNDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9n
dGsvV2ViUHJvY2Vzc0d0ay5jcHAKQEAgLTI4LDEzICsyOCwzNiBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsKQordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBj
YWNoZU1vZGVsKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7IAorICAgIHVuc2lnbmVkIGNhY2hl
VG90YWxDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNaW5EZWFkQ2FwYWNpdHkgPSAw
OworICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKKyAgICBkb3VibGUgZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDA7CisgICAgdW5zaWduZWQgcGFnZUNhY2hl
Q2FwYWNpdHkgPSAwOworCisgICAgLy8gRklYTUU6IEFkZCBkaXNrIGNhY2hlIGhhbmRsaW5nIHdo
ZW4gc291cCBoYXMgdGhlIEFQSQorICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVNZW1vcnlDYXBh
Y2l0eSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7Cisg
ICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKKworICAgIC8vIEZJWE1FOiBUaGUgTWFjIHBv
cnQgY2FsY3VsYXRlcyB0aGVzZSB2YWx1ZXMgYmFzZWQgb24gdGhlIGFtb3VudCBvZiBwaHlzaWNh
bCBtZW1vcnkgdGhhdCdzCisgICAgLy8gaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uIEN1cnJlbnRs
eSB0aGVzZSB2YWx1ZXMgbWF0Y2ggdGhlIE1hYyBwb3J0IGZvciB1c2VycyB3aXRoIG1vcmUgdGhh
bgorICAgIC8vIDUxMiBNQiBhbmQgbGVzcyB0aGFuIDEwMjQgTUIgb2YgcGh5c2ljYWwgbWVtb3J5
LgorICAgIHVpbnQ2NF90IG1lbVNpemUgPSA1MTI7CisgICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhj
YWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRD
YXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxD
YWNoZURpc2tDYXBhY2l0eSk7CisKKyAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5zZXRDYXBh
Y2l0aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVU
b3RhbENhcGFjaXR5KTsKKyAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5zZXREZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwor
ICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShwYWdlQ2FjaGVDYXBhY2l0eSk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKFJlc291
cmNlQ2FjaGVzVG9DbGVhcikK
</data>
<flag name="review"
          id="104837"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108325</attachid>
            <date>2011-09-22 06:24:58 -0700</date>
            <delta_ts>2011-10-06 02:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cache-model2.diff</filename>
            <type>text/plain</type>
            <size>13710</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDlmMDgxLi5iY2QyMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDktMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjYWNoZSBtb2RlbCBmb3IgV2ViS2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmdW5jdGlv
biB0byBGaWxlU3lzdGVtIHRvIGdldCB0aGUgZnJlZSBzcGFjZSBvZiB0aGUgZmlsZQorICAgICAg
ICBzeXN0ZW0gd2hlcmUgdGhlIGdpdmVuIHBhdGggaXMgb24uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKToKKwogMjAxMS0w
OS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gV2ViUHJvY2VzcyBzaG91bGRuJ3QgdXNlIHRoZSBHVEsrIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDRlODBlNWYuLmU0OGU1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0w
OS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dUS10gSW1wbGVtZW50IGNhY2hlIG1vZGVsIGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hl
X21vZGVsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY2FjaGVfbW9kZWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2ViY29udGV4dC5jOgorICAgICAgICAodGVz
dFdlYkNvbnRleHRDYWNoZU1vZGVsKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRDYWNoZURp
c2tGcmVlU2l6ZSk6IEhlbHBlciBmdW5jdGlvbiB0byBnZXQgZnJlZSBzcGFjZQorICAgICAgICBv
ZiB0aGUgZmlsZSBzeXN0ZW0gd2hlcmUgdGhlIGNhY2hlIGRpcmVjdG9yeSBpcyBvbi4KKyAgICAg
ICAgKFdlYktpdDo6Z2V0TWVtb3J5U2l6ZSk6IEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIHRv
dGFsIG1lbW9yeQorICAgICAgICBvZiB0aGUgc3lzdGVtIGluIE1CLiBJdCdzIG9ubHkgaW1wbGVt
ZW50ZWQgZm9yIGxpbnV4LCBmb3Igb3RoZXIKKyAgICAgICAgcGxhdGZvcm1zIGl0IGZhbGxzYmFj
ayB0byA1MTJNQiB3aGljaCBpcyB3aGF0IHdlYmtpdDEgc2VlbXMgdG8KKyAgICAgICAgZG8uCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6IEltcGxl
bWVudAorICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwgZm9yIEd0ayBwb3J0IHVzaW5nIGNh
bGN1bGF0ZUNhY2hlU2l6ZXMoKS4KKwogMjAxMS0wOS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViUHJvY2VzcyBzaG91bGRu
J3QgdXNlIHRoZSBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4
IDZmNGU4ZDQuLjNhOGE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAg
LTIwNSw2ICsyMDUsNyBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJp
bmcmKTsKIFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqKTsKIFN0cmluZyBmaWxl
bmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0
b3J5UGF0aCgpOwordWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIq
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggZTJiMTY0Mi4uZWU3
MDlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNw
cApAQCAtMTk3LDYgKzE5NywxNiBAQCBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgp
CiAjZW5kaWYKIH0KIAordWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNo
YXIqIHBhdGgpCit7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKHBhdGgpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBh
ZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVf
QVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOworICAgIGlmICghZmlsZUluZm8pCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVf
dWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7
Cit9CisKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAv
KiBObyBudWxsIGNoZWNraW5nIG5lZWRlZCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA4OGEwOWEyLi40YmNj
YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtNzQsNCArNzQsODAgQEAgV2ViS2l0V2ViQ29udGV4dCogd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KHZvaWQpCiAgICAgcmV0dXJuIFdFQktJVF9XRUJf
Q09OVEVYVChnX29uY2UoJm9uY2VJbml0LCBjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCwgMCkpOwog
fQogCisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWw6CisgKiBAY29u
dGV4dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKiBAY2FjaGVfbW9kZWw6IGEgI1dlYktpdENh
Y2hlTW9kZWwKKyAqCisgKiBTcGVjaWZpZXMgYSB1c2FnZSBtb2RlbCBmb3IgV2ViVmlld3MsIHdo
aWNoIFdlYktpdCB3aWxsIHVzZSB0bworICogZGV0ZXJtaW5lIGl0cyBjYWNoaW5nIGJlaGF2aW9y
LiBBbGwgd2ViIHZpZXdzIGZvbGxvdyB0aGUgY2FjaGUKKyAqIG1vZGVsLiBUaGlzIGNhY2hlIG1v
ZGVsIGRldGVybWluZXMgdGhlIFJBTSBhbmQgZGlzayBzcGFjZSB0byB1c2UKKyAqIGZvciBjYWNo
aW5nIHByZXZpb3VzbHkgdmlld2VkIGNvbnRlbnQgLgorICoKKyAqIFJlc2VhcmNoIGluZGljYXRl
cyB0aGF0IHVzZXJzIHRlbmQgdG8gYnJvd3NlIHdpdGhpbiBjbHVzdGVycyBvZgorICogZG9jdW1l
bnRzIHRoYXQgaG9sZCByZXNvdXJjZXMgaW4gY29tbW9uLCBhbmQgdG8gcmV2aXNpdCBwcmV2aW91
c2x5CisgKiB2aXNpdGVkIGRvY3VtZW50cy4gV2ViS2l0IGFuZCB0aGUgZnJhbWV3b3JrcyBiZWxv
dyBpdCBpbmNsdWRlCisgKiBidWlsdC1pbiBjYWNoZXMgdGhhdCB0YWtlIGFkdmFudGFnZSBvZiB0
aGVzZSBwYXR0ZXJucywKKyAqIHN1YnN0YW50aWFsbHkgaW1wcm92aW5nIGRvY3VtZW50IGxvYWQg
c3BlZWQgaW4gYnJvd3NpbmcKKyAqIHNpdHVhdGlvbnMuIFRoZSBXZWJLaXQgY2FjaGUgbW9kZWwg
Y29udHJvbHMgdGhlIGJlaGF2aW9ycyBvZiBhbGwgb2YKKyAqIHRoZXNlIGNhY2hlcywgaW5jbHVk
aW5nIHZhcmlvdXMgV2ViQ29yZSBjYWNoZXMuCisgKgorICogQnJvd3NlcnMgY2FuIGltcHJvdmUg
ZG9jdW1lbnQgbG9hZCBzcGVlZCBzdWJzdGFudGlhbGx5IGJ5CisgKiBzcGVjaWZ5aW5nIFdFQktJ
VF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUi4gQXBwbGljYXRpb25zIHdpdGhvdXQgYQorICogYnJv
d3NpbmcgaW50ZXJmYWNlIGNhbiByZWR1Y2UgbWVtb3J5IHVzYWdlIHN1YnN0YW50aWFsbHkgYnkK
KyAqIHNwZWNpZnlpbmcgV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX1ZJRVdFUi4gVGhlIGRl
ZmF1bHQgdmFsdWUgaXMKKyAqIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUi4KKyAqCisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0LCBXZWJLaXRDYWNoZU1vZGVsIG1vZGVsKQoreworICAgIFdLQ2FjaGVNb2Rl
bCBjYWNoZU1vZGVsOworCisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRF
WFQoY29udGV4dCkpOworCisgICAgc3dpdGNoIChtb2RlbCkgeworICAgIGNhc2UgV0VCS0lUX0NB
Q0hFX01PREVMX0RPQ1VNRU5UX1ZJRVdFUjoKKyAgICAgICAgY2FjaGVNb2RlbCA9IGtXS0NhY2hl
TW9kZWxEb2N1bWVudFZpZXdlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQ0FD
SEVfTU9ERUxfV0VCX0JST1dTRVI6CisgICAgICAgIGNhY2hlTW9kZWwgPSBrV0tDYWNoZU1vZGVs
UHJpbWFyeVdlYkJyb3dzZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0NBQ0hF
X01PREVMX0RPQ1VNRU5UX0JST1dTRVI6CisgICAgICAgIGNhY2hlTW9kZWwgPSBrV0tDYWNoZU1v
ZGVsRG9jdW1lbnRCcm93c2VyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKyAgICBXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CisgICAgaWYgKGNhY2hlTW9kZWwgIT0gV0tDb250
ZXh0R2V0Q2FjaGVNb2RlbChwcml2LT5jb250ZXh0KSkKKyAgICAgICAgV0tDb250ZXh0U2V0Q2Fj
aGVNb2RlbChwcml2LT5jb250ZXh0LCBjYWNoZU1vZGVsKTsKK30KIAorLyoqCisgKiB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVsOgorICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2Vi
Q29udGV4dAorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgY2FjaGUgbW9kZWwuIEZvciBtb3Jl
IGluZm9ybWF0aW9uIGFib3V0IHRoaXMKKyAqIHZhbHVlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBmdW5jdGlvbgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCgp
LgorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50ICNXZWJLaXRDYWNoZU1vZGVsCisgKi8KK1dl
YktpdENhY2hlTW9kZWwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbChXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSwgV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSKTsK
KworICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gY29udGV4dC0+cHJpdjsKKyAg
ICBzd2l0Y2ggKFdLQ29udGV4dEdldENhY2hlTW9kZWwocHJpdi0+Y29udGV4dCkpIHsKKyAgICBj
YXNlIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9D
QUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI7CisgICAgY2FzZSBrV0tDYWNoZU1vZGVsUHJpbWFy
eVdlYkJyb3dzZXI6CisgICAgICAgIHJldHVybiBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dT
RVI7CisgICAgY2FzZSBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOgorICAgICAgICByZXR1
cm4gV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX0JST1dTRVI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gV0VCS0lU
X0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IGMyOWZmYjYuLmUwNDg2NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmgKQEAgLTMyLDYgKzMyLDI2IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9DT05URVhUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9DT05URVhUKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9DT05U
RVhUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9UWVBFX1dFQl9DT05URVhULCBXZWJLaXRXZWJDb250ZXh0Q2xhc3MpKQogCisvKgorICog
V2ViS2l0Q2FjaGVNb2RlbDoKKyAqIEBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VS
OiBEaXNhYmxlIHRoZSBjYWNoZSBjb21wbGV0ZWx5LCB3aGljaAorICogICBzdWJzdGFudGlhbGx5
IHJlZHVjZXMgbWVtb3J5IHVzYWdlLiBVc2VmdWwgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG9ubHkK
KyAqICAgYWNjZXNzIGEgc2luZ2xlIGxvY2FsIGZpbGUsIHdpdGggbm8gbmF2aWdhdGlvbiB0byBv
dGhlciBwYWdlcy4gTm8gcmVtb3RlCisgKiAgIHJlc291cmNlcyB3aWxsIGJlIGNhY2hlZC4KKyAq
IEBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfQlJPV1NFUjogQSBjYWNoZSBtb2RlbCBvcHRp
bWl6ZWQgZm9yIHZpZXdpbmcKKyAqICAgYSBzZXJpZXMgb2YgbG9jYWwgZmlsZXMgLS0gZm9yIGV4
YW1wbGUsIGEgZG9jdW1lbnRhdGlvbiB2aWV3ZXIgb3IgYSB3ZWJzaXRlCisgKiAgIGRlc2lnbmVy
LiBXZWJLaXQgd2lsbCBjYWNoZSBhIG1vZGVyYXRlIG51bWJlciBvZiByZXNvdXJjZXMuCisgKiBA
V0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSOiBJbXByb3ZlIGRvY3VtZW50IGxvYWQgc3Bl
ZWQgc3Vic3RhbnRpYWxseQorICogICBieSBjYWNoaW5nIGEgdmVyeSBsYXJnZSBudW1iZXIgb2Yg
cmVzb3VyY2VzIGFuZCBwcmV2aW91c2x5IHZpZXdlZCBjb250ZW50LgorICoKKyAqIEVudW0gdmFs
dWVzIHVzZWQgZm9yIGRldGVybWluaW5nIHRoZSB3ZWJ2aWV3IGNhY2hlIG1vZGVsLgorICovCit0
eXBlZGVmIGVudW0geworICAgIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIsCisg
ICAgV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSLAorICAgIFdFQktJVF9DQUNIRV9NT0RF
TF9ET0NVTUVOVF9CUk9XU0VSCit9IFdlYktpdENhY2hlTW9kZWw7CisKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJDb250ZXh0ICAgICAgICBXZWJLaXRXZWJDb250ZXh0OwogdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYkNvbnRleHRDbGFzcyAgIFdlYktpdFdlYkNvbnRleHRDbGFzczsKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSBXZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZTsKQEAgLTU0LDEwICs3NCwxNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRDbGFzcyB7CiB9
OwogCiBXS19FWFBPUlQgR1R5cGUKLXdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZSAgICAodm9p
ZCk7Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUgICAgICAgICh2b2lkKTsKIAogV0tfRVhQ
T1JUIFdlYktpdFdlYkNvbnRleHQgKgotd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0ICh2
b2lkKTsKK3dlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCAgICAgKHZvaWQpOworCitXS19F
WFBPUlQgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCAoV2ViS2l0V2Vi
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdENhY2hlTW9kZWwgIGNhY2hlX21vZGVsKTsKK1dLX0VYUE9SVCBXZWJLaXRDYWNoZU1vZGVs
Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVsIChXZWJLaXRXZWJDb250ZXh0ICpj
b250ZXh0KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJjb250ZXh0LmMKaW5kZXggNWZmYzk3NC4uNGM2
OGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
dGVzdHdlYmNvbnRleHQuYworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy90ZXN0d2ViY29udGV4dC5jCkBAIC0yNyw2ICsyNywyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViQ29udGV4dERlZmF1bHQodm9pZCkKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X2RlZmF1bHQoKSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0Q2FjaGVNb2RlbCh2b2lkKQoreworICAgIFdlYktp
dFdlYkNvbnRleHQgKmNvbnRleHQgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsK
KworICAgIC8qIENoZWNrIGRlZmF1bHQgY2FjaGUgbW9kZWwgaXMgd2ViIGJyb3dzZXIuICovCisg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbChjb250ZXh0KSA9
PSBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIpOworCisgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9jYWNoZV9tb2RlbChjb250ZXh0LCBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRf
VklFV0VSKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVs
KGNvbnRleHQpID09IFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIpOworCisgICAg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbChjb250ZXh0LCBXRUJLSVRfQ0FDSEVf
TU9ERUxfRE9DVU1FTlRfQlJPV1NFUik7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0
X2dldF9jYWNoZV9tb2RlbChjb250ZXh0KSA9PSBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRf
QlJPV1NFUik7CisKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsKGNvbnRl
eHQsIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUik7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbChjb250ZXh0KSA9PSBXRUJLSVRfQ0FDSEVfTU9E
RUxfV0VCX0JST1dTRVIpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7
CiAgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKQEAgLTM1LDYgKzUyLDggQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvIik7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJjb250ZXh0L2Rl
ZmF1bHRfY29udGV4dCIsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RXZWJDb250ZXh0RGVmYXVs
dCk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0Mi93ZWJjb250ZXh0L2NhY2hlX21vZGVs
IiwKKyAgICAgICAgICAgICAgICAgICAgdGVzdFdlYkNvbnRleHRDYWNoZU1vZGVsKTsKIAogICAg
IHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2d0ay9XZWJQcm9jZXNzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NHdGsuY3BwCmluZGV4IDc3MDg4YTMuLjQyOWNlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NHdGsuY3BwCkBAIC0yNywxNCAr
MjcsOTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAK
KyNkZWZpbmUgTElCU09VUF9VU0VfVU5TVEFCTEVfUkVRVUVTVF9BUEkKKwogI2luY2x1ZGUgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1j
YWNoZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQorc3RhdGljIHVpbnQ2NF90IGtE
ZWZhdWx0TWVtb3J5U2l6ZSA9IDUxMjsKKworc3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0Zy
ZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsgCisgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBHT3duUHRyPGNoYXI+IGNhY2hl
RGlyOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2Fj
aGVEaXIub3V0UHRyKCksIE5VTEwpOworICAgIGlmICghY2FjaGVEaXIpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjYWNo
ZURpci5nZXQoKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRNZW1vcnlTaXplKCkKK3sKKyNp
ZiBPUyhMSU5VWCkKKyAgICBHT3duUHRyPGNoYXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWdfZmlsZV9n
ZXRfY29udGVudHMoIi9wcm9jL21lbWluZm8iLCAmYnVmZmVyLm91dFB0cigpLCAwLCAwKSkKKyAg
ICAgICAgcmV0dXJuIGtEZWZhdWx0TWVtb3J5U2l6ZTsKKworICAgIGNoYXIqIHB0ciA9IHN0cnN0
cihidWZmZXIuZ2V0KCksICJNZW1Ub3RhbDoiKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0
dXJuIGtEZWZhdWx0TWVtb3J5U2l6ZTsKKworICAgIGNoYXIqIGVuZFB0cjsKKyAgICBndWludDY0
IHRvdGFsTWVtID0gZ19hc2NpaV9zdHJ0b3VsbChwdHIgKyBzdHJsZW4oIk1lbVRvdGFsOiIpLCAm
ZW5kUHRyLCAxMCk7CisgICAgd2hpbGUgKCplbmRQdHIpIHsKKyAgICAgICAgaWYgKCplbmRQdHIg
PT0gJ2snKQorICAgICAgICAgICAgcmV0dXJuIHRvdGFsTWVtIC8gMTAyNDsKKyAgICAgICAgaWYg
KCplbmRQdHIgPT0gJ00nKQorICAgICAgICAgICAgcmV0dXJuIHRvdGFsTWVtOworICAgICAgICBl
bmRQdHIrKzsKKyAgICB9CisgICAgcmV0dXJuIGtEZWZhdWx0TWVtb3J5U2l6ZTsKKyNlbHNlCisg
ICAgLy8gRmFsbGJhY2sgdG8gZGVmYXVsdCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorICAgIHJldHVy
biBrRGVmYXVsdE1lbW9yeVNpemU7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQoreworICAgIHVuc2lnbmVk
IGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNaW5EZWFkQ2FwYWNp
dHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKKyAgICBkb3Vi
bGUgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDA7CisgICAgdW5zaWduZWQgcGFn
ZUNhY2hlQ2FwYWNpdHkgPSAwOworCisgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsK
KworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRl
ZmF1bHRTZXNzaW9uKCk7CisgICAgU291cENhY2hlKiBjYWNoZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U291cENhY2hlKj4oc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9D
QUNIRSkpOworICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IGdldENhY2hlRGlza0ZyZWVTaXpl
KGNhY2hlKTsKKworICAgIHVpbnQ2NF90IG1lbVNpemUgPSBnZXRNZW1vcnlTaXplKCk7CisgICAg
Y2FsY3VsYXRlQ2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENh
cGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNo
ZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CisKKyAgICBXZWJDb3JlOjpt
ZW1vcnlDYWNoZSgpLT5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1h
eERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKKyAgICBXZWJDb3JlOjptZW1vcnlD
YWNoZSgpLT5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0
YURlbGV0aW9uSW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0
eShwYWdlQ2FjaGVDYXBhY2l0eSk7CisKKyAgICBpZiAoY2FjaGUpIHsKKyAgICAgICAgaWYgKHVy
bENhY2hlRGlza0NhcGFjaXR5ID4gc291cF9jYWNoZV9nZXRfbWF4X3NpemUoY2FjaGUpKQorICAg
ICAgICAgICAgc291cF9jYWNoZV9zZXRfbWF4X3NpemUoY2FjaGUsIHVybENhY2hlRGlza0NhcGFj
aXR5KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNl
Q2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhcikK
</data>
<flag name="review"
          id="105257"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109934</attachid>
            <date>2011-10-06 02:11:44 -0700</date>
            <delta_ts>2011-10-06 08:30:25 -0700</delta_ts>
            <desc>Updated patch to use sysconf</desc>
            <filename>wk2-cache-model3.diff</filename>
            <type>text/plain</type>
            <size>13324</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwM2U4YjE2Li5hYTQzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTAtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBjYWNoZSBtb2RlbCBmb3IgV2ViS2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmdW5jdGlv
biB0byBGaWxlU3lzdGVtIHRvIGdldCB0aGUgZnJlZSBzcGFjZSBvZiB0aGUgZmlsZQorICAgICAg
ICBzeXN0ZW0gd2hlcmUgdGhlIGdpdmVuIHBhdGggaXMgb24uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKToKKwogMjAxMS0x
MC0wNSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVm
YWN0b3IgSURMIGF0dHJpYnV0ZXMgYWJvdXQgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNmM1
MTA1Li43NGE4ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMDYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEltcGxlbWVudCBjYWNoZSBtb2RlbCBmb3IgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbCk6
CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYzoKKyAgICAgICAgKHRlc3RXZWJDb250
ZXh0Q2FjaGVNb2RlbCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0Q2FjaGVEaXNrRnJlZVNp
emUpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGZyZWUgc3BhY2UKKyAgICAgICAgb2YgdGhlIGZp
bGUgc3lzdGVtIHdoZXJlIHRoZSBjYWNoZSBkaXJlY3RvcnkgaXMgb24uCisgICAgICAgIChXZWJL
aXQ6OmdldE1lbW9yeVNpemUpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSB0b3RhbCBtZW1v
cnkKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBpbiBNQi4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKTogSW1wbGVtZW50CisgICAgICAgIHBsYXRmb3Jt
U2V0Q2FjaGVNb2RlbCBmb3IgR3RrIHBvcnQgdXNpbmcgY2FsY3VsYXRlQ2FjaGVTaXplcygpLgor
CiAyMDExLTEwLTAzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYW4gb3B0aW9uIHRvIHN1cHByZXNzIHJlbmRlcmluZyB1bnRpbCB0aGUgZG9jdW1lbnQncyBs
b2FkIGV2ZW50IGZpcmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGFl
NzQ4MjAuLjMzYzY0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE5
OCw2ICsxOTgsNyBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcm
KTsKIFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqKTsKIFN0cmluZyBmaWxlbmFt
ZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5
UGF0aCgpOwordWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggZTJiMTY0Mi4uZWU3MDlk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApA
QCAtMTk3LDYgKzE5NywxNiBAQCBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpCiAj
ZW5kaWYKIH0KIAordWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIq
IHBhdGgpCit7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKHBhdGgpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRU
UklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOworICAgIGlmICghZmlsZUluZm8pCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWlu
dDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7Cit9
CisKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvKiBO
byBudWxsIGNoZWNraW5nIG5lZWRlZCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBiMGYyZjIzLi4xZjk1OTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtNzQsNiArNzQsODQgQEAgV2ViS2l0V2ViQ29udGV4dCogd2Via2l0
X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KHZvaWQpCiAgICAgcmV0dXJuIFdFQktJVF9XRUJfQ09O
VEVYVChnX29uY2UoJm9uY2VJbml0LCBjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCwgMCkpOwogfQog
CisvKioKKyAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWw6CisgKiBAY29udGV4
dDogdGhlICNXZWJLaXRXZWJDb250ZXh0CisgKiBAY2FjaGVfbW9kZWw6IGEgI1dlYktpdENhY2hl
TW9kZWwKKyAqCisgKiBTcGVjaWZpZXMgYSB1c2FnZSBtb2RlbCBmb3IgV2ViVmlld3MsIHdoaWNo
IFdlYktpdCB3aWxsIHVzZSB0bworICogZGV0ZXJtaW5lIGl0cyBjYWNoaW5nIGJlaGF2aW9yLiBB
bGwgd2ViIHZpZXdzIGZvbGxvdyB0aGUgY2FjaGUKKyAqIG1vZGVsLiBUaGlzIGNhY2hlIG1vZGVs
IGRldGVybWluZXMgdGhlIFJBTSBhbmQgZGlzayBzcGFjZSB0byB1c2UKKyAqIGZvciBjYWNoaW5n
IHByZXZpb3VzbHkgdmlld2VkIGNvbnRlbnQgLgorICoKKyAqIFJlc2VhcmNoIGluZGljYXRlcyB0
aGF0IHVzZXJzIHRlbmQgdG8gYnJvd3NlIHdpdGhpbiBjbHVzdGVycyBvZgorICogZG9jdW1lbnRz
IHRoYXQgaG9sZCByZXNvdXJjZXMgaW4gY29tbW9uLCBhbmQgdG8gcmV2aXNpdCBwcmV2aW91c2x5
CisgKiB2aXNpdGVkIGRvY3VtZW50cy4gV2ViS2l0IGFuZCB0aGUgZnJhbWV3b3JrcyBiZWxvdyBp
dCBpbmNsdWRlCisgKiBidWlsdC1pbiBjYWNoZXMgdGhhdCB0YWtlIGFkdmFudGFnZSBvZiB0aGVz
ZSBwYXR0ZXJucywKKyAqIHN1YnN0YW50aWFsbHkgaW1wcm92aW5nIGRvY3VtZW50IGxvYWQgc3Bl
ZWQgaW4gYnJvd3NpbmcKKyAqIHNpdHVhdGlvbnMuIFRoZSBXZWJLaXQgY2FjaGUgbW9kZWwgY29u
dHJvbHMgdGhlIGJlaGF2aW9ycyBvZiBhbGwgb2YKKyAqIHRoZXNlIGNhY2hlcywgaW5jbHVkaW5n
IHZhcmlvdXMgV2ViQ29yZSBjYWNoZXMuCisgKgorICogQnJvd3NlcnMgY2FuIGltcHJvdmUgZG9j
dW1lbnQgbG9hZCBzcGVlZCBzdWJzdGFudGlhbGx5IGJ5CisgKiBzcGVjaWZ5aW5nIFdFQktJVF9D
QUNIRV9NT0RFTF9XRUJfQlJPV1NFUi4gQXBwbGljYXRpb25zIHdpdGhvdXQgYQorICogYnJvd3Np
bmcgaW50ZXJmYWNlIGNhbiByZWR1Y2UgbWVtb3J5IHVzYWdlIHN1YnN0YW50aWFsbHkgYnkKKyAq
IHNwZWNpZnlpbmcgV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX1ZJRVdFUi4gVGhlIGRlZmF1
bHQgdmFsdWUgaXMKKyAqIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJPV1NFUi4KKyAqCisgKi8K
K3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbChXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0LCBXZWJLaXRDYWNoZU1vZGVsIG1vZGVsKQoreworICAgIFdLQ2FjaGVNb2RlbCBj
YWNoZU1vZGVsOworCisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0NPTlRFWFQo
Y29udGV4dCkpOworCisgICAgc3dpdGNoIChtb2RlbCkgeworICAgIGNhc2UgV0VCS0lUX0NBQ0hF
X01PREVMX0RPQ1VNRU5UX1ZJRVdFUjoKKyAgICAgICAgY2FjaGVNb2RlbCA9IGtXS0NhY2hlTW9k
ZWxEb2N1bWVudFZpZXdlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQ0FDSEVf
TU9ERUxfV0VCX0JST1dTRVI6CisgICAgICAgIGNhY2hlTW9kZWwgPSBrV0tDYWNoZU1vZGVsUHJp
bWFyeVdlYkJyb3dzZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0NBQ0hFX01P
REVMX0RPQ1VNRU5UX0JST1dTRVI6CisgICAgICAgIGNhY2hlTW9kZWwgPSBrV0tDYWNoZU1vZGVs
RG9jdW1lbnRCcm93c2VyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBn
X2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KKyAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CisgICAgaWYgKGNhY2hlTW9kZWwgIT0gV0tDb250ZXh0
R2V0Q2FjaGVNb2RlbChwcml2LT5jb250ZXh0LmdldCgpKSkKKyAgICAgICAgV0tDb250ZXh0U2V0
Q2FjaGVNb2RlbChwcml2LT5jb250ZXh0LmdldCgpLCBjYWNoZU1vZGVsKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVsOgorICogQGNvbnRleHQ6IHRoZSAj
V2ViS2l0V2ViQ29udGV4dAorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgY2FjaGUgbW9kZWwu
IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMKKyAqIHZhbHVlIGNoZWNrIHRoZSBkb2N1
bWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbgorICogd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNo
ZV9tb2RlbCgpLgorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50ICNXZWJLaXRDYWNoZU1vZGVs
CisgKi8KK1dlYktpdENhY2hlTW9kZWwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2Rl
bChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwgV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9C
Uk9XU0VSKTsKKworICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gY29udGV4dC0+
cHJpdjsKKyAgICBzd2l0Y2ggKFdLQ29udGV4dEdldENhY2hlTW9kZWwocHJpdi0+Y29udGV4dC5n
ZXQoKSkpIHsKKyAgICBjYXNlIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjoKKyAgICAgICAg
cmV0dXJuIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI7CisgICAgY2FzZSBrV0tD
YWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXI6CisgICAgICAgIHJldHVybiBXRUJLSVRfQ0FDSEVf
TU9ERUxfV0VCX0JST1dTRVI7CisgICAgY2FzZSBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2Vy
OgorICAgICAgICByZXR1cm4gV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX0JST1dTRVI7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSOworfQorCiBXS0NvbnRleHRS
ZWYgd2Via2l0V2ViQ29udGV4dEdldFdLQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
KQogewogICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgK
aW5kZXggODYyM2IxMC4uNzg2Yzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtMzYsNiArMzYsMjYgQEAgR19CRUdJ
Tl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNfV0VCX0NPTlRFWFRfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQpKQog
I2RlZmluZSBXRUJLSVRfV0VCX0NPTlRFWFRfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsIFdlYktpdFdlYkNv
bnRleHRDbGFzcykpCiAKKy8qCisgKiBXZWJLaXRDYWNoZU1vZGVsOgorICogQFdFQktJVF9DQUNI
RV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI6IERpc2FibGUgdGhlIGNhY2hlIGNvbXBsZXRlbHksIHdo
aWNoCisgKiAgIHN1YnN0YW50aWFsbHkgcmVkdWNlcyBtZW1vcnkgdXNhZ2UuIFVzZWZ1bCBmb3Ig
YXBwbGljYXRpb25zIHRoYXQgb25seQorICogICBhY2Nlc3MgYSBzaW5nbGUgbG9jYWwgZmlsZSwg
d2l0aCBubyBuYXZpZ2F0aW9uIHRvIG90aGVyIHBhZ2VzLiBObyByZW1vdGUKKyAqICAgcmVzb3Vy
Y2VzIHdpbGwgYmUgY2FjaGVkLgorICogQFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9CUk9X
U0VSOiBBIGNhY2hlIG1vZGVsIG9wdGltaXplZCBmb3Igdmlld2luZworICogICBhIHNlcmllcyBv
ZiBsb2NhbCBmaWxlcyAtLSBmb3IgZXhhbXBsZSwgYSBkb2N1bWVudGF0aW9uIHZpZXdlciBvciBh
IHdlYnNpdGUKKyAqICAgZGVzaWduZXIuIFdlYktpdCB3aWxsIGNhY2hlIGEgbW9kZXJhdGUgbnVt
YmVyIG9mIHJlc291cmNlcy4KKyAqIEBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVI6IElt
cHJvdmUgZG9jdW1lbnQgbG9hZCBzcGVlZCBzdWJzdGFudGlhbGx5CisgKiAgIGJ5IGNhY2hpbmcg
YSB2ZXJ5IGxhcmdlIG51bWJlciBvZiByZXNvdXJjZXMgYW5kIHByZXZpb3VzbHkgdmlld2VkIGNv
bnRlbnQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHdlYnZp
ZXcgY2FjaGUgbW9kZWwuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0NBQ0hFX01P
REVMX0RPQ1VNRU5UX1ZJRVdFUiwKKyAgICBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIs
CisgICAgV0VCS0lUX0NBQ0hFX01PREVMX0RPQ1VNRU5UX0JST1dTRVIKK30gV2ViS2l0Q2FjaGVN
b2RlbDsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHQgICAgICAgIFdlYktpdFdl
YkNvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dENsYXNzICAgV2ViS2l0
V2ViQ29udGV4dENsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRl
IFdlYktpdFdlYkNvbnRleHRQcml2YXRlOwpAQCAtNTgsMTAgKzc4LDE2IEBAIHN0cnVjdCBfV2Vi
S2l0V2ViQ29udGV4dENsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdHlwZSAgICAodm9pZCk7Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUg
ICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKLXdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZGVmYXVsdCAodm9pZCk7Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Rl
ZmF1bHQgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X2NhY2hlX21vZGVsIChXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q2FjaGVNb2RlbCAgY2FjaGVfbW9kZWwpOwor
V0VCS0lUX0FQSSBXZWJLaXRDYWNoZU1vZGVsCit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2NhY2hl
X21vZGVsIChXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0KTsKIAogR19FTkRfREVDTFMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNv
bnRleHQuYyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Rlc3R3ZWJj
b250ZXh0LmMKaW5kZXggMWI1MjU3Zi4uMGZjZTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvdGVzdHdlYmNvbnRleHQuYworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy90ZXN0d2ViY29udGV4dC5jCkBAIC0yNyw2
ICsyNywyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dERlZmF1bHQodm9pZCkKICAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSA9PSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0Q2Fj
aGVNb2RlbCh2b2lkKQoreworICAgIFdlYktpdFdlYkNvbnRleHQgKmNvbnRleHQgPSB3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKTsKKworICAgIC8qIENoZWNrIGRlZmF1bHQgY2FjaGUg
bW9kZWwgaXMgd2ViIGJyb3dzZXIuICovCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0
X2dldF9jYWNoZV9tb2RlbChjb250ZXh0KSA9PSBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dT
RVIpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9tb2RlbChjb250ZXh0LCBX
RUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2NhY2hlX21vZGVsKGNvbnRleHQpID09IFdFQktJVF9DQUNIRV9NT0RF
TF9ET0NVTUVOVF9WSUVXRVIpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9jYWNoZV9t
b2RlbChjb250ZXh0LCBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfQlJPV1NFUik7CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbChjb250ZXh0KSA9PSBX
RUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfQlJPV1NFUik7CisKKyAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2NhY2hlX21vZGVsKGNvbnRleHQsIFdFQktJVF9DQUNIRV9NT0RFTF9XRUJfQlJP
V1NFUik7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9jYWNoZV9tb2RlbChj
b250ZXh0KSA9PSBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dTRVIpOworfQorCiBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKQEAg
LTM1LDYgKzUyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGdfdGVz
dF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CiAgICAgZ190ZXN0X2FkZF9m
dW5jKCIvd2Via2l0Mi93ZWJjb250ZXh0L2RlZmF1bHRfY29udGV4dCIsCiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RXZWJDb250ZXh0RGVmYXVsdCk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0Mi93ZWJjb250ZXh0L2NhY2hlX21vZGVsIiwKKyAgICAgICAgICAgICAgICAgICAgdGVzdFdl
YkNvbnRleHRDYWNoZU1vZGVsKTsKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NHdGsuY3BwCmluZGV4IDc3
MDg4YTMuLjBhN2Y3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NHdGsuY3BwCkBAIC0yNywxNCArMjcsNzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKKyNkZWZpbmUgTElCU09VUF9VU0VfVU5TVEFCTEVf
UkVRVUVTVF9BUEkKKwogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9y
eUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUNhY2hlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1jYWNoZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKKyNpZiAhT1Mo
V0lORE9XUykKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbHNlCitzdGF0aWMgdWludDY0X3Qga0Rl
ZmF1bHRNZW1vcnlTaXplID0gNTEyOworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQorc3RhdGlj
IHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCit7CisgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBHT3duUHRyPGNoYXI+IGNhY2hl
RGlyOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2Fj
aGVEaXIub3V0UHRyKCksIE5VTEwpOworICAgIGlmICghY2FjaGVEaXIpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjYWNo
ZURpci5nZXQoKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRNZW1vcnlTaXplKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOyAKKyNpZiAhT1MoV0lORE9XUykKKyAgICByZXR1cm4gKChzeXNj
b25mKF9TQ19QQUdFU0laRSkgLyAxMDI0KSAqIHN5c2NvbmYoX1NDX1BIWVNfUEFHRVMpKSAvIDEw
MjQ7CisjZWxzZQorICAgIC8vIEZhbGxiYWNrIHRvIGRlZmF1bHQgZm9yIG90aGVyIHBsYXRmb3Jt
cy4KKyAgICByZXR1cm4ga0RlZmF1bHRNZW1vcnlTaXplOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
UHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKK3sK
KyAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hl
TWluRGVhZENhcGFjaXR5ID0gMDsKKyAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9
IDA7CisgICAgZG91YmxlIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSAwOworICAg
IHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKKworICAgIHVuc2lnbmVkIGxvbmcgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tD
YXBhY2l0eSA9IDA7CisKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBDYWNoZSogY2FjaGUgPSByZWlu
dGVycHJldF9jYXN0PFNvdXBDYWNoZSo+KHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9u
LCBTT1VQX1RZUEVfQ0FDSEUpKTsKKyAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSBnZXRDYWNo
ZURpc2tGcmVlU2l6ZShjYWNoZSk7CisKKyAgICB1aW50NjRfdCBtZW1TaXplID0gZ2V0TWVtb3J5
U2l6ZSgpOworICAgIGNhbGN1bGF0ZUNhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgbWVtU2l6ZSwgZGlz
a0ZyZWVTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBj
YWNoZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0
YURlbGV0aW9uSW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ2FjaGVDYXBh
Y2l0eSwgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOworCisg
ICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS0+c2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBh
Y2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7CisgICAgV2Vi
Q29yZTo6bWVtb3J5Q2FjaGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChk
ZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKKyAgICBXZWJDb3JlOjpwYWdlQ2FjaGUo
KS0+c2V0Q2FwYWNpdHkocGFnZUNhY2hlQ2FwYWNpdHkpOworCisgICAgaWYgKGNhY2hlKSB7Cisg
ICAgICAgIGlmICh1cmxDYWNoZURpc2tDYXBhY2l0eSA+IHNvdXBfY2FjaGVfZ2V0X21heF9zaXpl
KGNhY2hlKSkKKyAgICAgICAgICAgIHNvdXBfY2FjaGVfc2V0X21heF9zaXplKGNhY2hlLCB1cmxD
YWNoZURpc2tDYXBhY2l0eSk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3Jt
Q2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCg==
</data>
<flag name="review"
          id="107278"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>