<?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>145685</bug_id>
          
          <creation_ts>2015-06-04 21:34:44 -0700</creation_ts>
          <short_desc>[EFL] Make send/receive messages to communicate the Web and UI processes using Injected Bundle</short_desc>
          <delta_ts>2015-06-25 18:35:37 -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>WebKit EFL</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>146015</dependson>
          <blocked>145337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hyungwook Lee">hyungwook.lee</reporter>
          <assigned_to name="Hyungwook Lee">hyungwook.lee</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ryuan.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099757</commentid>
    <comment_count>0</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-04 21:34:44 -0700</bug_when>
    <thetext>As we know Injected Bundle provides a way to send/receive user messages to communicate the Web and UI processes.
It is useful implement port specific API without changing current architecture.

In my investigation, gtk port provide many APIs and Callbacks using Injected Bundle such as webkit_web_context_prefetch_dns(), webKitWebViewDidReceiveSnapshot().

To have extensible port specific API facility using Injected Bundle, we need to load libewebkit_extension_manager.so Injected Bundle in default that is same as what gtk port does.
Hence I suggest to make load libewebkit_extension_manager.so Injected Bundle in default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099758</commentid>
    <comment_count>1</comment_count>
      <attachid>254340</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-04 21:43:13 -0700</bug_when>
    <thetext>Created attachment 254340
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100275</commentid>
    <comment_count>2</comment_count>
      <attachid>254340</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-07 18:22:39 -0700</bug_when>
    <thetext>Comment on attachment 254340
patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        To have extensible port specific API facility using Injected Bundle,
&gt; +        we need to load libewebkit_extension_manager.so in default that is same as what gtk port does.

Good to me to make ewk_extension_manager as a default bundle.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:115
&gt; -    if (!extensionsPath.isEmpty()) {
&gt; +    if (!bundlePathForExtension().isEmpty()) {

If we make extension manager as a default, this code also can be a default.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:155
&gt; +        return create();

Why we should change the behavior about this?

If we can&apos;t find bundlePath, we&apos;d better to return nullptr to catch the error.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:-164
&gt; -    static EwkContext* defaultInstance = create().leakRef();

I am not sure whether we should keep create() when we always create ewkContext with extension bundle.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:164
&gt; +    static EwkContext* defaultInstance = create(&quot;&quot;).leakRef();

Let&apos;s use emptyString()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100297</commentid>
    <comment_count>3</comment_count>
      <attachid>254340</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-07 20:38:40 -0700</bug_when>
    <thetext>Comment on attachment 254340
patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:115
&gt;&gt; +    if (!bundlePathForExtension().isEmpty()) {
&gt; 
&gt; If we make extension manager as a default, this code also can be a default.

I will remove if statement.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:155
&gt;&gt; +        return create();
&gt; 
&gt; Why we should change the behavior about this?
&gt; 
&gt; If we can&apos;t find bundlePath, we&apos;d better to return nullptr to catch the error.

I got it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:-164
&gt;&gt; -    static EwkContext* defaultInstance = create().leakRef();
&gt; 
&gt; I am not sure whether we should keep create() when we always create ewkContext with extension bundle.

I will handle this on another issue.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:164
&gt;&gt; +    static EwkContext* defaultInstance = create(&quot;&quot;).leakRef();
&gt; 
&gt; Let&apos;s use emptyString()

I got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100317</commentid>
    <comment_count>4</comment_count>
      <attachid>254477</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-08 00:39:41 -0700</bug_when>
    <thetext>Created attachment 254477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100525</commentid>
    <comment_count>5</comment_count>
      <attachid>254477</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-08 17:30:48 -0700</bug_when>
    <thetext>Comment on attachment 254477
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:67
&gt; +static String bundlePathForExtension()

Now, you don&apos;t need to move this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100538</commentid>
    <comment_count>6</comment_count>
      <attachid>254477</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-08 17:53:44 -0700</bug_when>
    <thetext>Comment on attachment 254477
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:67
&gt;&gt; +static String bundlePathForExtension()
&gt; 
&gt; Now, you don&apos;t need to move this.

+1
Nice catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100550</commentid>
    <comment_count>7</comment_count>
      <attachid>254535</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-08 19:03:32 -0700</bug_when>
    <thetext>Created attachment 254535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100556</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-08 19:28:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created attachment 254535 [details]
&gt; Patch

Looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100606</commentid>
    <comment_count>9</comment_count>
      <attachid>254535</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-09 01:46:48 -0700</bug_when>
    <thetext>Comment on attachment 254535
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:-102
&gt; -    if (!extensionsPath.isEmpty()) {

Why should we remove this check ? EwkContext only can called from one place ? Can&apos;t other places create an EwkContext instance with empty string ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:162
&gt; +    static EwkContext* defaultInstance = create(emptyString()).leakRef();

Hmm... this code looks not good. How about change it with below code ?

   static PassRefPtr&lt;EwkContext&gt; create(const String&amp; injectedBundlePath); 
  =&gt;
   static PassRefPtr&lt;EwkContext&gt; createWithInjectedBundlePath(const String&amp; injectedBundlePath = String())

Then, this line will be changed as below,
   static EwkContext* defaultInstance = createWithInjectedBundlePath().leakRef();

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:54
&gt; +    if (!userData)

I&apos;m not sure if we need to check if userData is null. Isn&apos;t userData passed as a reference ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100613</commentid>
    <comment_count>10</comment_count>
      <attachid>254535</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-09 02:38:04 -0700</bug_when>
    <thetext>Comment on attachment 254535
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:-102
&gt;&gt; -    if (!extensionsPath.isEmpty()) {
&gt; 
&gt; Why should we remove this check ? EwkContext only can called from one place ? Can&apos;t other places create an EwkContext instance with empty string ?

Previously we load injected bundle when we set web extension path and then we set injected bundle client in same condition.
Now we will load injected bundle in default as same as gtk port.
I think we do not need to check extensionsPath because to set injected bundle client is not related to web extension path anymore.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:162
&gt;&gt; +    static EwkContext* defaultInstance = create(emptyString()).leakRef();
&gt; 
&gt; Hmm... this code looks not good. How about change it with below code ?
&gt; 
&gt;    static PassRefPtr&lt;EwkContext&gt; create(const String&amp; injectedBundlePath); 
&gt;   =&gt;
&gt;    static PassRefPtr&lt;EwkContext&gt; createWithInjectedBundlePath(const String&amp; injectedBundlePath = String())
&gt; 
&gt; Then, this line will be changed as below,
&gt;    static EwkContext* defaultInstance = createWithInjectedBundlePath().leakRef();

I think InjectedBundlePath and extensions Path are different.
In this case we need to load default injected bundle even if we didn&apos;t set any other web extensions path.

After this patch, I will refactoring EwkContext::create() that based on supporting load injected bundle in default.

&gt;&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:54
&gt;&gt; +    if (!userData)
&gt; 
&gt; I&apos;m not sure if we need to check if userData is null. Isn&apos;t userData passed as a reference ?

1. When we load ExtensionManagerEfl Injected Bundle without web extensions, we passes null pointer in userData.
2. WKTypeRef is void *</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101872</commentid>
    <comment_count>11</comment_count>
      <attachid>254535</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-14 21:19:51 -0700</bug_when>
    <thetext>Comment on attachment 254535
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:162
&gt;&gt;&gt; +    static EwkContext* defaultInstance = create(emptyString()).leakRef();
&gt;&gt; 
&gt;&gt; Hmm... this code looks not good. How about change it with below code ?
&gt;&gt; 
&gt;&gt;    static PassRefPtr&lt;EwkContext&gt; create(const String&amp; injectedBundlePath); 
&gt;&gt;   =&gt;
&gt;&gt;    static PassRefPtr&lt;EwkContext&gt; createWithInjectedBundlePath(const String&amp; injectedBundlePath = String())
&gt;&gt; 
&gt;&gt; Then, this line will be changed as below,
&gt;&gt;    static EwkContext* defaultInstance = createWithInjectedBundlePath().leakRef();
&gt; 
&gt; I think InjectedBundlePath and extensions Path are different.
&gt; In this case we need to load default injected bundle even if we didn&apos;t set any other web extensions path.
&gt; 
&gt; After this patch, I will refactoring EwkContext::create() that based on supporting load injected bundle in default.

I don&apos;t talk about architecture or path&apos;s difference. I meant that &quot;create(emptyString())&quot; seems not good style. Why should we pass an empty string to call function ?  IMHO, this isn&apos;t good function call style. I wish that we define more clear function style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101885</commentid>
    <comment_count>12</comment_count>
      <attachid>254535</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-14 23:27:44 -0700</bug_when>
    <thetext>Comment on attachment 254535
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:162
&gt;&gt;&gt;&gt; +    static EwkContext* defaultInstance = create(emptyString()).leakRef();
&gt;&gt;&gt; 
&gt;&gt;&gt; Hmm... this code looks not good. How about change it with below code ?
&gt;&gt;&gt; 
&gt;&gt;&gt;    static PassRefPtr&lt;EwkContext&gt; create(const String&amp; injectedBundlePath); 
&gt;&gt;&gt;   =&gt;
&gt;&gt;&gt;    static PassRefPtr&lt;EwkContext&gt; createWithInjectedBundlePath(const String&amp; injectedBundlePath = String())
&gt;&gt;&gt; 
&gt;&gt;&gt; Then, this line will be changed as below,
&gt;&gt;&gt;    static EwkContext* defaultInstance = createWithInjectedBundlePath().leakRef();
&gt;&gt; 
&gt;&gt; I think InjectedBundlePath and extensions Path are different.
&gt;&gt; In this case we need to load default injected bundle even if we didn&apos;t set any other web extensions path.
&gt;&gt; 
&gt;&gt; After this patch, I will refactoring EwkContext::create() that based on supporting load injected bundle in default.
&gt; 
&gt; I don&apos;t talk about architecture or path&apos;s difference. I meant that &quot;create(emptyString())&quot; seems not good style. Why should we pass an empty string to call function ?  IMHO, this isn&apos;t good function call style. I wish that we define more clear function style.

I got your point clearly.
I will update it as your guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101922</commentid>
    <comment_count>13</comment_count>
      <attachid>254875</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-15 06:58:06 -0700</bug_when>
    <thetext>Created attachment 254875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101933</commentid>
    <comment_count>14</comment_count>
      <attachid>254875</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-15 08:44:21 -0700</bug_when>
    <thetext>Comment on attachment 254875
Patch

Clearing flags on attachment: 254875

Committed r185552: &lt;http://trac.webkit.org/changeset/185552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101934</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-15 08:44:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102224</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-16 06:02:11 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 146015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103575</commentid>
    <comment_count>17</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-19 22:19:34 -0700</bug_when>
    <thetext>Current patch broken two test cases.

1) test_ewk2_context
-&gt; Current patch return null pointer if there is no injected bundle exist.
It makes broken.

2) WKContextSetInjectedBundleClient
-&gt; Current patch can&apos;t set another Injected Bundle Client so we can&apos;t pass this test that need to set its own Injected Bundle Client.

I will fix those issues and upload new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103576</commentid>
    <comment_count>18</comment_count>
      <attachid>255279</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-19 22:26:10 -0700</bug_when>
    <thetext>Created attachment 255279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103766</commentid>
    <comment_count>19</comment_count>
      <attachid>255279</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-21 22:33:41 -0700</bug_when>
    <thetext>Comment on attachment 255279
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:147
&gt;  {   

Please change return type from *PassRefPtr* to *Ref*

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:-57
&gt; -    m_extension = std::make_unique&lt;EwkExtension&gt;(toImpl(bundle));

Why do you need to move this from this line to 53 line ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103777</commentid>
    <comment_count>20</comment_count>
      <attachid>255279</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-22 00:43:28 -0700</bug_when>
    <thetext>Comment on attachment 255279
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:-57
&gt;&gt; -    m_extension = std::make_unique&lt;EwkExtension&gt;(toImpl(bundle));
&gt; 
&gt; Why do you need to move this from this line to 53 line ?

We need to make load default injected bundle(EwkExtension) even if there is no extension bundle that passes by userData. 
Because EwkExtension will receive IPC messages from UI Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104589</commentid>
    <comment_count>21</comment_count>
      <attachid>255279</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-24 20:53:14 -0700</bug_when>
    <thetext>Comment on attachment 255279
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:147
&gt;&gt;  {   
&gt; 
&gt; Please change return type from *PassRefPtr* to *Ref*

Please fix this comment before landing.

&gt;&gt;&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:-57
&gt;&gt;&gt; -    m_extension = std::make_unique&lt;EwkExtension&gt;(toImpl(bundle));
&gt;&gt; 
&gt;&gt; Why do you need to move this from this line to 53 line ?
&gt; 
&gt; We need to make load default injected bundle(EwkExtension) even if there is no extension bundle that passes by userData. 
&gt; Because EwkExtension will receive IPC messages from UI Process.

Ok. I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104625</commentid>
    <comment_count>22</comment_count>
      <attachid>255545</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-25 04:16:17 -0700</bug_when>
    <thetext>Created attachment 255545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104831</commentid>
    <comment_count>23</comment_count>
      <attachid>255545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 18:35:32 -0700</bug_when>
    <thetext>Comment on attachment 255545
Patch

Clearing flags on attachment: 255545

Committed r185977: &lt;http://trac.webkit.org/changeset/185977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104832</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 18:35:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254340</attachid>
            <date>2015-06-04 21:43:13 -0700</date>
            <delta_ts>2015-06-08 00:39:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4574</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTIzNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA2LTA0ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZC9yZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIHRoZSBXZWIgYW5kIFVJIHBy
b2Nlc3NlcyB1c2luZyBJbmplY3RlZCBCdW5kbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyBoYXZlIGV4dGVuc2libGUgcG9ydCBzcGVjaWZpYyBB
UEkgZmFjaWxpdHkgdXNpbmcgSW5qZWN0ZWQgQnVuZGxlLAorICAgICAgICB3ZSBuZWVkIHRvIGxv
YWQgbGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zbyBpbiBkZWZhdWx0IHRoYXQgaXMgc2Ft
ZSBhcyB3aGF0IGd0ayBwb3J0IGRvZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHA6CisgICAgICAgIChjb250ZXh0TWFwKToKKyAgICAgICAgKGJ1bmRsZVBh
dGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6ZGVmYXVsdENv
bnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKwog
MjAxNS0wNi0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTg1MDkxKTogQ3Jhc2ggaGFwcGVucyBvbiBpbmRleGRiIHRlc3Rz
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuY3BwCShyZXZpc2lvbiAxODUxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDE5IEBAIHN0
YXRpYyBpbmxpbmUgQ29udGV4dE1hcCYgY29udGV4dE1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0K
IAorc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKK3sKKyAgICBTdHJpbmcg
YnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChTdHJpbmc6OmZyb21VVEY4KFRFU1RfTElCX0RJUiksIEVYVEVOU0lPTk1BTkFHRVJOQU1FKTsK
KyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKSkKKyAg
ICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247CisKKyAgICBidW5kbGVQYXRoRm9y
RXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJv
bVVURjgoRVhURU5TSU9OTUFOQUdFUkRJUiksIEVYVEVOU0lPTk1BTkFHRVJOQU1FKTsKKyAgICBp
ZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKSkKKyAgICAgICAg
cmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247CisKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKK30KKwogRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9kYXRhYmFzZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tEYXRhYmFzZU1hbmFnZXI+
KFdLQ29udGV4dEdldERhdGFiYXNlTWFuYWdlcihjb250ZXh0KSkpCkBAIC05OSw3ICsxMTIsNyBA
QCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250CiAgICAgbV9jYWxsYmFj
a0Zvck1lc3NhZ2VGcm9tRXh0ZW5zaW9uLmNhbGxiYWNrID0gbnVsbHB0cjsKICAgICBtX2NhbGxi
YWNrRm9yTWVzc2FnZUZyb21FeHRlbnNpb24udXNlckRhdGEgPSBudWxscHRyOwogCi0gICAgaWYg
KCFleHRlbnNpb25zUGF0aC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWJ1bmRsZVBhdGhGb3JFeHRl
bnNpb24oKS5pc0VtcHR5KCkpIHsKICAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnRWMSBjbGllbnQ7CiAgICAgICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CiAKQEAgLTEzNSwyNCArMTQ4LDExIEBAIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4
dDo6Y3JlYXQKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0Nv
bnRleHRDcmVhdGUoKSkuZ2V0KCkpKTsKIH0KIAotc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9y
RXh0ZW5zaW9uKCkKLXsKLSAgICBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KFRFU1RfTElCX0RJ
UiksIEVYVEVOU0lPTk1BTkFHRVJOQU1FKTsKLSAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhi
dW5kbGVQYXRoRm9yRXh0ZW5zaW9uKSkKLSAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRl
bnNpb247Ci0KLSAgICBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoRVhURU5TSU9OTUFOQUdFUkRJUiksIEVY
VEVOU0lPTk1BTkFHRVJOQU1FKTsKLSAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQ
YXRoRm9yRXh0ZW5zaW9uKSkKLSAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247
Ci0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQogUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBFd2tDb250ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAK
ICAgICBTdHJpbmcgYnVuZGxlUGF0aCA9IGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24oKTsKICAgICBp
ZiAoYnVuZGxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gY3JlYXRlKCk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0
V0sodG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwogCkBAIC0xNjEsNyArMTYxLDcgQEAgUGFzc1Jl
ZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVhdAogCiBFd2tDb250ZXh0KiBFd2tDb250
ZXh0OjpkZWZhdWx0Q29udGV4dCgpCiB7Ci0gICAgc3RhdGljIEV3a0NvbnRleHQqIGRlZmF1bHRJ
bnN0YW5jZSA9IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgRXdrQ29udGV4dCogZGVm
YXVsdEluc3RhbmNlID0gY3JlYXRlKCIiKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gZGVmYXVs
dEluc3RhbmNlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5z
aW9uTWFuYWdlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAJKHJldmlzaW9uIDE4NTE5MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxMiArNTAsMTQgQEAgdm9pZCBFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0
aWFsaXplKFdLQgogewogICAgIEFTU0VSVCghbV9leHRlbnNpb24pOwogCisgICAgbV9leHRlbnNp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkpOyAgICAK
KyAgICBpZiAoIXVzZXJEYXRhKQorICAgICAgICByZXR1cm47CisKICAgICBTdHJpbmcgZXh0ZW5z
aW9uc0RpcmVjdG9yeSA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNlckRhdGEp
KS0+c3RyaW5nKCk7CiAgICAgaWYgKGV4dGVuc2lvbnNEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2V4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0
ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7Ci0KICAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRo
cyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkoZXh0ZW5zaW9uc0RpcmVjdG9yeSwgQVNDSUlMaXRl
cmFsKCIqLnNvIikpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5z
aXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254477</attachid>
            <date>2015-06-08 00:39:41 -0700</date>
            <delta_ts>2015-06-08 19:03:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145685-20150608163915.patch</filename>
            <type>text/plain</type>
            <size>5162</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTMxMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA2LTA3ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZC9yZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIHRoZSBXZWIgYW5kIFVJIHBy
b2Nlc3NlcyB1c2luZyBJbmplY3RlZCBCdW5kbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyBoYXZlIGV4dGVuc2libGUgcG9ydCBzcGVjaWZpYyBB
UEkgZmFjaWxpdHkgdXNpbmcgSW5qZWN0ZWQgQnVuZGxlLAorICAgICAgICB3ZSBuZWVkIHRvIGxv
YWQgbGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zbyBpbiBkZWZhdWx0IHRoYXQgaXMgc2Ft
ZSBhcyB3aGF0IGd0ayBwb3J0IGRvZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHA6CisgICAgICAgIChjb250ZXh0TWFwKToKKyAgICAgICAgKGJ1bmRsZVBh
dGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6ZGVmYXVsdENv
bnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKwog
MjAxNS0wNi0wNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW0VGTF1bR1RLXSBGaXggYnVpbGQgIGJyZWFrIHNpbmNlIHIxODUyNjIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAJKHJl
dmlzaW9uIDE4NTMxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTkgQEAgc3RhdGljIGlubGlu
ZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCitzdGF0aWMg
U3RyaW5nIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24oKQoreworICAgIFN0cmluZyBidW5kbGVQYXRo
Rm9yRXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6
ZnJvbVVURjgoVEVTVF9MSUJfRElSKSwgRVhURU5TSU9OTUFOQUdFUk5BTUUpOworICAgIGlmIChX
ZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pKQorICAgICAgICByZXR1
cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbjsKKworICAgIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24g
PSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChFWFRF
TlNJT05NQU5BR0VSRElSKSwgRVhURU5TSU9OTUFOQUdFUk5BTUUpOworICAgIGlmIChXZWJDb3Jl
OjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pKQorICAgICAgICByZXR1cm4gYnVu
ZGxlUGF0aEZvckV4dGVuc2lvbjsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCiBF
d2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbnNQYXRoKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RhdGFi
YXNlTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEV3a0RhdGFiYXNlTWFuYWdlcj4oV0tDb250ZXh0
R2V0RGF0YWJhc2VNYW5hZ2VyKGNvbnRleHQpKSkKQEAgLTk5LDE3ICsxMTIsMTUgQEAgRXdrQ29u
dGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udAogICAgIG1fY2FsbGJhY2tGb3JNZXNz
YWdlRnJvbUV4dGVuc2lvbi5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1l
c3NhZ2VGcm9tRXh0ZW5zaW9uLnVzZXJEYXRhID0gbnVsbHB0cjsKIAotICAgIGlmICghZXh0ZW5z
aW9uc1BhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50VjEgY2xpZW50OwotICAgICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkp
OwotCi0gICAgICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOwotICAgICAgICBjbGllbnQuYmFz
ZS5jbGllbnRJbmZvID0gdGhpczsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0g
ICAgICAgIGNsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBn
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CisgICAgV0tDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVv
ZihjbGllbnQpKTsKIAotICAgICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCht
X2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0gICAgfQorICAgIGNsaWVudC5iYXNlLnZl
cnNpb24gPSAxOworICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOworICAgIGNsaWVu
dC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlOworICAgIGNsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEgPSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7
CisKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCks
ICZjbGllbnQuYmFzZSk7CiB9CiAKIEV3a0NvbnRleHQ6On5Fd2tDb250ZXh0KCkKQEAgLTEzNSwx
OSArMTQ2LDYgQEAgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVhdAogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgp
KS5nZXQoKSkpOwogfQogCi1zdGF0aWMgU3RyaW5nIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24oKQot
ewotICAgIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoVEVTVF9MSUJfRElSKSwgRVhURU5TSU9O
TUFOQUdFUk5BTUUpOwotICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhGb3JF
eHRlbnNpb24pKQotICAgICAgICByZXR1cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbjsKLQotICAg
IGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24gPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoU3RyaW5nOjpmcm9tVVRGOChFWFRFTlNJT05NQU5BR0VSRElSKSwgRVhURU5TSU9OTUFOQUdF
Uk5BTUUpOwotICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhGb3JFeHRlbnNp
b24pKQotICAgICAgICByZXR1cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbjsKLQotICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotfQotCiBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKQogeyAgIAogICAgIFN0cmluZyBi
dW5kbGVQYXRoID0gYnVuZGxlUGF0aEZvckV4dGVuc2lvbigpOwpAQCAtMTYxLDcgKzE1OSw3IEBA
IFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXQKIAogRXdrQ29udGV4dCog
RXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKQogewotICAgIHN0YXRpYyBFd2tDb250ZXh0KiBk
ZWZhdWx0SW5zdGFuY2UgPSBjcmVhdGUoKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEV3a0NvbnRl
eHQqIGRlZmF1bHRJbnN0YW5jZSA9IGNyZWF0ZShlbXB0eVN0cmluZygpKS5sZWFrUmVmKCk7CiAK
ICAgICByZXR1cm4gZGVmYXVsdEluc3RhbmNlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAJKHJldmlzaW9u
IDE4NTMxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTQgQEAgdm9pZCBFeHRlbnNp
b25NYW5hZ2VyRWZsOjppbml0aWFsaXplKFdLQgogewogICAgIEFTU0VSVCghbV9leHRlbnNpb24p
OwogCisgICAgbV9leHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9J
bXBsKGJ1bmRsZSkpOyAgICAKKyAgICBpZiAoIXVzZXJEYXRhKQorICAgICAgICByZXR1cm47CisK
ICAgICBTdHJpbmcgZXh0ZW5zaW9uc0RpcmVjdG9yeSA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4odXNlckRhdGEpKS0+c3RyaW5nKCk7CiAgICAgaWYgKGV4dGVuc2lvbnNEaXJlY3Rv
cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2V4dGVuc2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7Ci0KICAgICBWZWN0b3I8
U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkoZXh0ZW5zaW9uc0Rp
cmVjdG9yeSwgQVNDSUlMaXRlcmFsKCIqLnNvIikpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254535</attachid>
            <date>2015-06-08 19:03:32 -0700</date>
            <delta_ts>2015-06-15 06:57:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145685-20150609110305.patch</filename>
            <type>text/plain</type>
            <size>3554</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTM0NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTA4ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZC9yZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIHRoZSBXZWIgYW5kIFVJIFBy
b2Nlc3NlcyB1c2luZyBJbmplY3RlZCBCdW5kbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyBoYXZlIGV4dGVuc2libGUgcG9ydCBzcGVjaWZpYyBB
UEkgZmFjaWxpdHkgdXNpbmcgSW5qZWN0ZWQgQnVuZGxlLAorICAgICAgICB3ZSBuZWVkIHRvIGxv
YWQgbGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zbyBpbiBkZWZhdWx0IHRoYXQgaXMgc2Ft
ZSBhcyB3aGF0IGd0ayBwb3J0IGRvZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tDb250ZXh0KToKKyAgICAg
ICAgKEV3a0NvbnRleHQ6On5Fd2tDb250ZXh0KToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmRlZmF1
bHRDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZSk6
CisKIDIwMTUtMDYtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBY2Nlc3MgR0NDb250cm9sbGVyIGluc3RhbmNlIHZpYSBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRv
bigpIGluc3RlYWQgb2YgYSBmcmVlIGZ1bmN0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCShyZXZpc2lvbiAxODUzNDUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDE3ICs5OSwxNSBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29u
dGV4dFJlZiBjb250CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tRXh0ZW5zaW9uLmNhbGxi
YWNrID0gbnVsbHB0cjsKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21FeHRlbnNpb24udXNl
ckRhdGEgPSBudWxscHRyOwogCi0gICAgaWYgKCFleHRlbnNpb25zUGF0aC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7Ci0gICAgICAg
IG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KLSAgICAgICAgY2xpZW50LmJh
c2UudmVyc2lvbiA9IDE7Ci0gICAgICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwot
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLSAgICAgICAgY2xpZW50LmdldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YTsKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNs
aWVudDsKKyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogCi0gICAgICAg
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVu
dC5iYXNlKTsKLSAgICB9CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7CisgICAgY2xpZW50
LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Cisg
ICAgY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIH0KIAog
RXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQpAQCAtMTYxLDcgKzE1OSw3IEBAIFBhc3NSZWZQdHI8
RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXQKIAogRXdrQ29udGV4dCogRXdrQ29udGV4dDo6
ZGVmYXVsdENvbnRleHQoKQogewotICAgIHN0YXRpYyBFd2tDb250ZXh0KiBkZWZhdWx0SW5zdGFu
Y2UgPSBjcmVhdGUoKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEV3a0NvbnRleHQqIGRlZmF1bHRJ
bnN0YW5jZSA9IGNyZWF0ZShlbXB0eVN0cmluZygpKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4g
ZGVmYXVsdEluc3RhbmNlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwv
RXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAJKHJldmlzaW9uIDE4NTM0NSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTQgQEAgdm9pZCBFeHRlbnNpb25NYW5hZ2VyRWZs
Ojppbml0aWFsaXplKFdLQgogewogICAgIEFTU0VSVCghbV9leHRlbnNpb24pOwogCisgICAgbV9l
eHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkp
OyAgICAKKyAgICBpZiAoIXVzZXJEYXRhKQorICAgICAgICByZXR1cm47CisKICAgICBTdHJpbmcg
ZXh0ZW5zaW9uc0RpcmVjdG9yeSA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNl
ckRhdGEpKS0+c3RyaW5nKCk7CiAgICAgaWYgKGV4dGVuc2lvbnNEaXJlY3RvcnkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2V4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7Ci0KICAgICBWZWN0b3I8U3RyaW5nPiBtb2R1
bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkoZXh0ZW5zaW9uc0RpcmVjdG9yeSwgQVND
SUlMaXRlcmFsKCIqLnNvIikpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQ
YXRocy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254875</attachid>
            <date>2015-06-15 06:58:06 -0700</date>
            <delta_ts>2015-06-19 22:26:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145685-20150615225732.patch</filename>
            <type>text/plain</type>
            <size>4459</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTU1MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA2LTE1ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZC9yZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIHRoZSBXZWIgYW5kIFVJIFBy
b2Nlc3NlcyB1c2luZyBJbmplY3RlZCBCdW5kbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUbyBoYXZlIGV4dGVuc2libGUgcG9ydCBzcGVjaWZpYyBB
UEkgZmFjaWxpdHkgdXNpbmcgSW5qZWN0ZWQgQnVuZGxlLAorICAgICAgICB3ZSBuZWVkIHRvIGxv
YWQgbGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zbyBpbiBkZWZhdWx0IHRoYXQgaXMgc2Ft
ZSBhcyB3aGF0IGd0ayBwb3J0IGRvZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tDb250ZXh0KToKKyAgICAg
ICAgKEV3a0NvbnRleHQ6On5Fd2tDb250ZXh0KToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmZpbmRP
ckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoYnVuZGxlUGF0aEZvckV4dGVuc2lvbik6CisgICAg
ICAgIChFd2tDb250ZXh0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXh0ZW5zaW9uTWFuYWdl
ckVmbDo6aW5pdGlhbGl6ZSk6CisKIDIwMTUtMDYtMTUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9z
c3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdW51c2VkIHByaXZhdGUgZmllbGQgd2Fybmlu
ZyBpbiBQYWdlQmFubmVyLmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAJKHJldmlzaW9uIDE4NTU0NykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTksMTcgKzk5LDE1IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnQK
ICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21FeHRlbnNpb24uY2FsbGJhY2sgPSBudWxscHRy
OwogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUV4dGVuc2lvbi51c2VyRGF0YSA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIWV4dGVuc2lvbnNQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKLSAgICAgICAgbWVtc2V0KCZjbGll
bnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQotICAgICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0g
MTsKLSAgICAgICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgICAgIGNsaWVu
dC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlOwotICAgICAgICBjbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhOworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OworICAgIG1l
bXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKLSAgICAgICAgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotICAg
IH0KKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBjbGllbnQuYmFzZS5jbGllbnRJ
bmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBjbGllbnQuZ2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogfQogCiBFd2tDb250ZXh0Ojp+
RXdrQ29udGV4dCgpCkBAIC0xMzAsMTEgKzEyOCw2IEBAIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4g
RXdrQ29udGV4dDo6ZmluZE8KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoY29u
dGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0
Q3JlYXRlKCkpLmdldCgpKSk7Ci19Ci0KIHN0YXRpYyBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVu
c2lvbigpCiB7CiAgICAgU3RyaW5nIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24gPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBF
WFRFTlNJT05NQU5BR0VSTkFNRSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCShyZXZpc2lvbiAxODU1NDcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDcgQEAgcHVibGljOgogICAgIEVXS19PQkpF
Q1RfREVDTEFSRShFd2tDb250ZXh0KQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrQ29udGV4
dD4gZmluZE9yQ3JlYXRlV3JhcHBlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RXdrQ29udGV4dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRl
bnNpb25zUGF0aCA9IFN0cmluZygpKTsKIAogICAgIHN0YXRpYyBFd2tDb250ZXh0KiBkZWZhdWx0
Q29udGV4dCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNp
b25NYW5hZ2VyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAkocmV2aXNpb24gMTg1NTQ3KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDEyICs1MCwxNCBAQCB2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRp
YWxpemUoV0tCCiB7CiAgICAgQVNTRVJUKCFtX2V4dGVuc2lvbik7CiAKKyAgICBtX2V4dGVuc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7ICAgIAor
ICAgIGlmICghdXNlckRhdGEpCisgICAgICAgIHJldHVybjsKKwogICAgIFN0cmluZyBleHRlbnNp
b25zRGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPih1c2VyRGF0YSkp
LT5zdHJpbmcoKTsKICAgICBpZiAoZXh0ZW5zaW9uc0RpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZXh0ZW5zaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRl
bnNpb24+KHRvSW1wbChidW5kbGUpKTsKLQogICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhz
ID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShleHRlbnNpb25zRGlyZWN0b3J5LCBBU0NJSUxpdGVy
YWwoIiouc28iKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNp
emUoKTsgKytpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255279</attachid>
            <date>2015-06-19 22:26:10 -0700</date>
            <delta_ts>2015-06-25 04:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145685-20150620142531.patch</filename>
            <type>text/plain</type>
            <size>4815</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTc4OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA2LTE5ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZCAvIHJlY2VpdmUgbWVzc2FnZXMgdG8gY29tbXVuaWNhdGUgdGhlIFdlYiBhbmQgVUkg
UHJvY2Vzc2VzIHVzaW5nIEluamVjdGVkIEJ1bmRsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGhhdmUgZXh0ZW5zaWJsZSBwb3J0IHNwZWNpZmlj
IEFQSSBmYWNpbGl0eSB1c2luZyBJbmplY3RlZCBCdW5kbGUsCisgICAgICAgIHdlIG5lZWQgdG8g
bG9hZCBsaWJld2Via2l0X2V4dGVuc2lvbl9tYW5hZ2VyLnNvIGluIGRlZmF1bHQgdGhhdCBpcyBz
YW1lIGFzIHdoYXQgZ3RrIHBvcnQgZG9lcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OkV3a0NvbnRleHQpOgorICAg
ICAgICAoRXdrQ29udGV4dDo6ZmluZE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgIChidW5kbGVQ
YXRoRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAg
IChFd2tDb250ZXh0OjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QpOgorICAg
ICAgICAoRXdrQ29udGV4dDo6aXNEZWZhdWx0QnVuZGxlKToKKyAgICAgICAgKGV3a19jb250ZXh0
X2RlZmF1bHRfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUpOgor
CiAyMDE1LTA2LTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTg1NDc1KTogW01hY10gQVNTRVJUKCkgd2hlbiBjbGlja2lu
ZyBvbiB0ZXh0IHVzaW5nIHdlYiBmb250cyB3aXRoIGZvcmNlIHRvdWNoIHRyYWNrcGFkCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
CShyZXZpc2lvbiAxODU3ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgRXdrQ29udGV4
dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udAogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdl
RnJvbUV4dGVuc2lvbi5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1lc3Nh
Z2VGcm9tRXh0ZW5zaW9uLnVzZXJEYXRhID0gbnVsbHB0cjsKIAotICAgIGlmICghZXh0ZW5zaW9u
c1BhdGguaXNFbXB0eSgpKSB7CisgICAgaWYgKCFleHRlbnNpb25zUGF0aC5pc0VtcHR5KCkgfHwg
aXNEZWZhdWx0QnVuZGxlKCkpIHsKICAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnRWMSBjbGllbnQ7CiAgICAgICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CiAKQEAgLTEzMCwxMSArMTMwLDYgQEAgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0
OjpmaW5kTwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChjb250ZXh0KSk7CiB9
CiAKLVBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUoKSku
Z2V0KCkpKTsKLX0KLQogc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKIHsK
ICAgICBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KFRFU1RfTElCX0RJUiksIEVYVEVOU0lPTk1B
TkFHRVJOQU1FKTsKQEAgLTE1Miw3ICsxNDcsNyBAQCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3
a0NvbnRleHQ6OmNyZWF0CiB7ICAgCiAgICAgU3RyaW5nIGJ1bmRsZVBhdGggPSBidW5kbGVQYXRo
Rm9yRXh0ZW5zaW9uKCk7CiAgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0so
V0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gcGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwogCkBAIC00NTMsNiAr
NDQ4LDExIEBAIHZvaWQgRXdrQ29udGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGkKICAgICB0
b0ltcGwobV9jb250ZXh0LmdldCgpKS0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgaG9zdCk7CiB9CiAKK2Jvb2wgRXdrQ29udGV4
dDo6aXNEZWZhdWx0QnVuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnVuZGxlUGF0aEZvckV4
dGVuc2lvbigpID09IHRvSW1wbChtX2NvbnRleHQuZ2V0KCkpLT5pbmplY3RlZEJ1bmRsZVBhdGgo
KTsKK30KKwogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIHsKICAgICBy
ZXR1cm4gRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgJKHJl
dmlzaW9uIDE4NTc4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBwdWJsaWM6
CiAgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a0NvbnRleHQpCiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxFd2tDb250ZXh0PiBmaW5kT3JDcmVhdGVXcmFwcGVyKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjcmVhdGUoKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1
bmRsZVBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgc3RhdGljIEV3a0Nv
bnRleHQqIGRlZmF1bHRDb250ZXh0KCk7CiAKQEAgLTEwNyw2ICsxMDYsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0YWJhc2Uo
KTsKKyAgICBib29sIGlzRGVmYXVsdEJ1bmRsZSgpIGNvbnN0OwogCiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBtX2NvbnRleHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCShyZXZpc2lvbiAxODU3
ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDE0IEBAIHZvaWQgRXh0ZW5zaW9uTWFu
YWdlckVmbDo6aW5pdGlhbGl6ZShXS0IKIHsKICAgICBBU1NFUlQoIW1fZXh0ZW5zaW9uKTsKIAor
ICAgIG1fZXh0ZW5zaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNpb24+KHRvSW1wbChi
dW5kbGUpKTsgICAgCisgICAgaWYgKCF1c2VyRGF0YSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
U3RyaW5nIGV4dGVuc2lvbnNEaXJlY3RvcnkgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KHVzZXJEYXRhKSktPnN0cmluZygpOwogICAgIGlmIChleHRlbnNpb25zRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9leHRlbnNpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkpOwotCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3Rv
cnksIEFTQ0lJTGl0ZXJhbCgiKi5zbyIpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255545</attachid>
            <date>2015-06-25 04:16:17 -0700</date>
            <delta_ts>2015-06-25 18:35:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145685-20150625201531.patch</filename>
            <type>text/plain</type>
            <size>6052</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTk1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA2LTI1ICBIeXVuZ3dv
b2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIE1h
a2Ugc2VuZCAvIHJlY2VpdmUgbWVzc2FnZXMgdG8gY29tbXVuaWNhdGUgdGhlIFdlYiBhbmQgVUkg
UHJvY2Vzc2VzIHVzaW5nIEluamVjdGVkIEJ1bmRsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KKworICAgICAgICBUbyBoYXZlIGV4dGVuc2libGUgcG9ydCBzcGVjaWZpYyBB
UEkgZmFjaWxpdHkgdXNpbmcgSW5qZWN0ZWQgQnVuZGxlLAorICAgICAgICB3ZSBuZWVkIHRvIGxv
YWQgbGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zbyBpbiBkZWZhdWx0IHRoYXQgaXMgc2Ft
ZSBhcyB3aGF0IGd0ayBwb3J0IGRvZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tDb250ZXh0KToKKyAgICAg
ICAgKEV3a0NvbnRleHQ6OmZpbmRPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoYnVuZGxlUGF0
aEZvckV4dGVuc2lvbik6CisgICAgICAgIChFd2tDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAo
RXdrQ29udGV4dDo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAg
ICAgKEV3a0NvbnRleHQ6OmlzRGVmYXVsdEJ1bmRsZSk6CisgICAgICAgIChld2tfY29udGV4dF9k
ZWZhdWx0X2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKwog
MjAxNS0wNi0yNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDcmFzaCBpbiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpIHJ1bm5pbmcgV0tXZWJWaWV3LkxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zp
c2lvbmFsTG9hZEVycm9yIHRlc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAJKHJldmlzaW9uIDE4NTk1MikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTksNyArOTksNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250
CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tRXh0ZW5zaW9uLmNhbGxiYWNrID0gbnVsbHB0
cjsKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21FeHRlbnNpb24udXNlckRhdGEgPSBudWxs
cHRyOwogCi0gICAgaWYgKCFleHRlbnNpb25zUGF0aC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWV4
dGVuc2lvbnNQYXRoLmlzRW1wdHkoKSB8fCBpc0RlZmF1bHRCdW5kbGUoKSkgewogICAgICAgICBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKICAgICAgICAgbWVtc2V0KCZj
bGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKIApAQCAtMTMwLDExICsxMzAsNiBAQCBQYXNzUmVm
UHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmZpbmRPCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFd2tDb250ZXh0KGNvbnRleHQpKTsKIH0KIAotUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tD
b250ZXh0OjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChh
ZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKS5nZXQoKSkpOwotfQotCiBzdGF0aWMgU3RyaW5nIGJ1
bmRsZVBhdGhGb3JFeHRlbnNpb24oKQogewogICAgIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5z
aW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgo
VEVTVF9MSUJfRElSKSwgRVhURU5TSU9OTUFOQUdFUk5BTUUpOwpAQCAtMTQ4LDIwICsxNDMsMjAg
QEAgc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKK1JlZjxFd2tDb250ZXh0PiBFd2tDb250
ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAKICAgICBTdHJp
bmcgYnVuZGxlUGF0aCA9IGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24oKTsKICAgICBpZiAoYnVuZGxl
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiAK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEko
YnVuZGxlUGF0aCkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0
V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0
KCksIGV4dGVuc2lvbnNQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRXdrQ29udGV4
dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQo
KSkpLmdldCgpLCBleHRlbnNpb25zUGF0aCkpOwogfQogCiBFd2tDb250ZXh0KiBFd2tDb250ZXh0
OjpkZWZhdWx0Q29udGV4dCgpCiB7Ci0gICAgc3RhdGljIEV3a0NvbnRleHQqIGRlZmF1bHRJbnN0
YW5jZSA9IGNyZWF0ZSgpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgRXdrQ29udGV4dCogZGVmYXVs
dEluc3RhbmNlID0gJmNyZWF0ZSgpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBkZWZhdWx0SW5z
dGFuY2U7CiB9CkBAIC00NTMsNiArNDQ4LDExIEBAIHZvaWQgRXdrQ29udGV4dDo6YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGkKICAgICB0b0ltcGwobV9jb250ZXh0LmdldCgpKS0+YWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgaG9zdCk7
CiB9CiAKK2Jvb2wgRXdrQ29udGV4dDo6aXNEZWZhdWx0QnVuZGxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbigpID09IHRvSW1wbChtX2NvbnRleHQuZ2V0KCkp
LT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsKK30KKwogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2Rl
ZmF1bHRfZ2V0KCkKIHsKICAgICByZXR1cm4gRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKTsK
QEAgLTQ2MCwxNCArNDYwLDE0IEBAIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dl
dCgpCiAKIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXcoKQogewotICAgIHJldHVybiBFd2tD
b250ZXh0OjpjcmVhdGUoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuICZFd2tDb250ZXh0OjpjcmVh
dGUoKS5sZWFrUmVmKCk7CiB9CiAKIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9l
eHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwocGF0aCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gRXdrQ29udGV4dDo6
Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gJkV3
a0NvbnRleHQ6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHBhdGgpKS5sZWFrUmVmKCk7CiB9CiAK
IEVpbmFfQm9vbCBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlZ2lzdGVyKEV3a19Db250ZXh0KiBl
d2tDb250ZXh0LCBjb25zdCBjaGFyKiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAkocmV2aXNpb24gMTg1
OTUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw3IEBAIHB1YmxpYzoKICAgICBFV0tf
T0JKRUNUX0RFQ0xBUkUoRXdrQ29udGV4dCkKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0Nv
bnRleHQ+IGZpbmRPckNyZWF0ZVdyYXBwZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEV3a0NvbnRleHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCk7
CisgICAgc3RhdGljIFJlZjxFd2tDb250ZXh0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25zUGF0aCA9IFN0cmluZygpKTsKIAogICAgIHN0YXRpYyBFd2tDb250ZXh0KiBkZWZhdWx0Q29u
dGV4dCgpOwogCkBAIC0xMDcsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBFd2tD
b250ZXh0KFdLQ29udGV4dFJlZiwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCA9IFN0cmlu
ZygpKTsKIAogICAgIHZvaWQgZW5zdXJlRmF2aWNvbkRhdGFiYXNlKCk7CisgICAgYm9vbCBpc0Rl
ZmF1bHRCdW5kbGUoKSBjb25zdDsKIAogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV9j
b250ZXh0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25N
YW5hZ2VyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAkocmV2aXNpb24gMTg1OTUyKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDEyICs1MCwxNCBAQCB2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxp
emUoV0tCCiB7CiAgICAgQVNTRVJUKCFtX2V4dGVuc2lvbik7CiAKKyAgICBtX2V4dGVuc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7ICAgIAorICAg
IGlmICghdXNlckRhdGEpCisgICAgICAgIHJldHVybjsKKwogICAgIFN0cmluZyBleHRlbnNpb25z
RGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPih1c2VyRGF0YSkpLT5z
dHJpbmcoKTsKICAgICBpZiAoZXh0ZW5zaW9uc0RpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZXh0ZW5zaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNp
b24+KHRvSW1wbChidW5kbGUpKTsKLQogICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0g
V2ViQ29yZTo6bGlzdERpcmVjdG9yeShleHRlbnNpb25zRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
Iiouc28iKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUo
KTsgKytpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>