<?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>61300</bug_id>
          
          <creation_ts>2011-05-23 13:37:40 -0700</creation_ts>
          <short_desc>Web Inspector: Reorganize InspectorBackendDispatch code to eliminate duplication</short_desc>
          <delta_ts>2011-05-24 07:37:38 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408219</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-23 13:37:40 -0700</bug_when>
    <thetext>A small refactoring shaves off 10-20% (platform dependent) size of InspectorBackendDispatch.o file (release version).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408222</commentid>
    <comment_count>1</comment_count>
      <attachid>94475</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-23 13:40:34 -0700</bug_when>
    <thetext>Created attachment 94475
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408665</commentid>
    <comment_count>2</comment_count>
      <attachid>94475</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-23 22:52:20 -0700</bug_when>
    <thetext>Comment on attachment 94475
patch

could you please provide a sample of generated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408701</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-24 00:32:54 -0700</bug_when>
    <thetext>This is an example of generated code:

void InspectorBackendDispatcher::Page_getResourceContent(long callId, InspectorObject* requestMessageObject)
{
    RefPtr&lt;InspectorArray&gt; protocolErrors = InspectorArray::create();

    if (!m_pageAgent)
        protocolErrors-&gt;pushString(&quot;Page handler is not available.&quot;);

    String out_content = &quot;&quot;;

    ErrorString error;

    if (RefPtr&lt;InspectorObject&gt; paramsContainer = requestMessageObject-&gt;getObject(&quot;params&quot;)) {
        String in_frameId = getString(paramsContainer.get(), &quot;frameId&quot;, false, protocolErrors.get());
        String in_url = getString(paramsContainer.get(), &quot;url&quot;, false, protocolErrors.get());
        bool in_base64Encode = getBoolean(paramsContainer.get(), &quot;base64Encode&quot;, true, protocolErrors.get());

        if (!protocolErrors-&gt;length())
            m_pageAgent-&gt;getResourceContent(&amp;error, in_frameId, in_url, &amp;in_base64Encode, &amp;out_content);
    } else
        protocolErrors-&gt;pushString(&quot;&apos;params&apos; property with type &apos;object&apos; was not found.&quot;);
    RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
    if (!protocolErrors-&gt;length() &amp;&amp; !error.length()) {
        result-&gt;setString(&quot;content&quot;, out_content);
    }
    sendResponse(callId, result, protocolErrors, error);
}

and InspectorBackendDispatcher::sendResponse looks like this:

void InspectorBackendDispatcher::sendResponse(long callId, PassRefPtr&lt;InspectorObject&gt; result, PassRefPtr&lt;InspectorArray&gt; protocolErrors, ErrorString invocationError)
{
    // use InspectorFrontend as a marker of WebInspector availability

    if (protocolErrors-&gt;length()) {
        reportProtocolError(&amp;callId, InvalidParams, protocolErrors);
        return;
    }
    if (invocationError.length()) {
        reportProtocolError(&amp;callId, ServerError, invocationError);
        return;
    }

    RefPtr&lt;InspectorObject&gt; responseMessage = InspectorObject::create();
    responseMessage-&gt;setObject(&quot;result&quot;, result);
    responseMessage-&gt;setNumber(&quot;id&quot;, callId);
    if (m_inspectorFrontendChannel)
        m_inspectorFrontendChannel-&gt;sendMessageToFrontend(responseMessage-&gt;toJSONString());
}    


I have moved result fields assignment higher, so the bottom part of the request handler has all the same code for all handlers. And I have moved this code out to &quot;sendResponse&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408782</commentid>
    <comment_count>4</comment_count>
      <attachid>94475</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-24 05:37:33 -0700</bug_when>
    <thetext>Comment on attachment 94475
patch

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

lgtm

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:510
&gt; +    // use InspectorFrontend as a marker of WebInspector availability

please remove this comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408810</commentid>
    <comment_count>5</comment_count>
      <attachid>94603</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-24 06:35:56 -0700</bug_when>
    <thetext>Created attachment 94603
patch

Comments addressed.

Also I have shrunk the size of the &apos;dispatch&apos; method by organizing command names and pointers into arrays and replacing series of &quot;dispatch.add&quot; with a loop.

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408838</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-05-24 07:37:38 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/87146


    2011-05-24  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: Reorganize InspectorBackendDispatch code to eliminate duplication
            https://bugs.webkit.org/show_bug.cgi?id=61300
    
            * inspector/CodeGeneratorInspector.pm:
    
    2011-05-24  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: Reorganize InspectorBackendDispatch code to eliminate duplication
            https://bugs.webkit.org/show_bug.cgi?id=61300
    
            * src/WebDevToolsAgentImpl.cpp:
            (WebKit::WebDevToolsAgent::shouldInterruptForMessage):</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94475</attachid>
            <date>2011-05-23 13:40:34 -0700</date>
            <delta_ts>2011-05-24 06:35:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-61300</filename>
            <type>text/plain</type>
            <size>6838</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjMzYjEwMi4uMWQzNzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDExLTA1LTIzICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUmVvcmdhbml6ZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2ggY29kZSB0byBlbGlt
aW5hdGUgZHVwbGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYxMzAwCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3Bl
Y3Rvci5wbToKKwogMjAxMS0wNS0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQppbmRleCAxZTc0MzBlLi5hODBj
YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5wbQpAQCAtNDE2LDggKzQxNiw4IEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlv
bgogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotICAgIG15ICRmdWxsUXVhbGlmaWVkRnVuY3Rpb25O
YW1lID0gJGludGVyZmFjZS0+bmFtZSAuICJfIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwotICAgIG15ICRmdWxsUXVhbGlmaWVkRnVuY3Rpb25OYW1lRG90ID0gJGludGVyZmFjZS0+bmFt
ZSAuICIuIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgIG15ICRmdWxsUXVhbGlm
aWVkRnVuY3Rpb25OYW1lID0gJGludGVyZmFjZS0+bmFtZSAuICJfIiAuICRmdW5jdGlvbk5hbWU7
CisgICAgbXkgJGZ1bGxRdWFsaWZpZWRGdW5jdGlvbk5hbWVEb3QgPSAkaW50ZXJmYWNlLT5uYW1l
IC4gIi4iIC4gJGZ1bmN0aW9uTmFtZTsKIAogICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xh
cmF0aW9ucywgIiAgICBzdGF0aWMgY29uc3QgY2hhciogJHtmdWxsUXVhbGlmaWVkRnVuY3Rpb25O
YW1lfUNtZDsiKTsKICAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWZpbml0aW9ucywgImNvbnN0
IGNoYXIqICR7YmFja2VuZENsYXNzTmFtZX06OiR7ZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZX1D
bWQgPSBcIiR7ZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZURvdH1cIjsiKTsKQEAgLTQ4MSw0MSAr
NDgxLDUzIEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICBwdXNoKEBmdW5j
dGlvbiwgIiAgICB9IGVsc2UiKTsKICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiJ3BhcmFtcycgcHJvcGVydHkgd2l0aCB0eXBlICdv
YmplY3QnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAgIH0KLQotICAgIHB1c2goQGZ1bmN0aW9u
LCAiIik7Ci0gICAgcHVzaChAZnVuY3Rpb24sICIgICAgLy8gdXNlIEluc3BlY3RvckZyb250ZW5k
IGFzIGEgbWFya2VyIG9mIFdlYkluc3BlY3RvciBhdmFpbGFiaWxpdHkiKTsKLSAgICBwdXNoKEBm
dW5jdGlvbiwgIiIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIGlmIChwcm90b2NvbEVycm9y
cy0+bGVuZ3RoKCkpIHsiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgcmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlkUGFyYW1zLCBwcm90b2NvbEVycm9ycyk7Iik7Ci0g
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIHJldHVybjsiKTsKLSAgICBwdXNoKEBmdW5jdGlv
biwgIiAgICB9Iik7Ci0gICAgcHVzaChAZnVuY3Rpb24sICIiKTsKLSAgICBwdXNoKEBmdW5jdGlv
biwgIiAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBTZXJ2ZXJFcnJvciwgZXJyb3IpOyIp
OwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICByZXR1cm47Iik7Ci0gICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgfSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiIik7Ci0gICAgcHVzaChAZnVu
Y3Rpb24sICIgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsiKTsKICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOyIp
OwotICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQG91dEFyZ3MpIHsKLSAgICAgICAgbXkgJG9m
ZnNldCA9ICIgICAgICAgICI7Ci0gICAgICAgICMgRG9uJ3QgYWRkIG9wdGlvbmFsIGJvb2xlYW4g
cGFyYW1ldGVyIHRvIHRoZSByZXN1bHQgdW5sZXNzIGl0IGlzICJ0cnVlIgotICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Im9wdGlvbmFsIn0gJiYgJHBhcmFtZXRl
ci0+dHlwZSBlcSAiYm9vbGVhbiIpIHsKLSAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAkb2Zm
c2V0IC4gImlmIChvdXRfIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiKSIpOwotICAgICAgICAgICAg
JG9mZnNldCAuPSAiICAgICI7CisgICAgaWYgKHNjYWxhcihAb3V0QXJncykpIHsKKyAgICAgICAg
cHVzaChAZnVuY3Rpb24sICIgICAgaWYgKCFwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkgJiYgIWVy
cm9yLmxlbmd0aCgpKSB7Iik7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQG91dEFy
Z3MpIHsKKyAgICAgICAgICAgIG15ICRvZmZzZXQgPSAiICAgICAgICAiOworICAgICAgICAgICAg
IyBEb24ndCBhZGQgb3B0aW9uYWwgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gdGhlIHJlc3VsdCB1bmxl
c3MgaXQgaXMgInRydWUiCisgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Im9wdGlvbmFsIn0gJiYgJHBhcmFtZXRlci0+dHlwZSBlcSAiYm9vbGVhbiIpIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgJG9mZnNldCAuICJpZiAob3V0XyIgLiAk
cGFyYW1ldGVyLT5uYW1lIC4gIikiKTsKKyAgICAgICAgICAgICAgICAkb2Zmc2V0IC49ICIgICAg
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAkb2Zmc2V0IC4g
InJlc3VsdC0+c2V0IiAuIHR5cGVUcmFpdHMoJHBhcmFtZXRlci0+dHlwZSwgIkpTT05UeXBlIikg
LiAiKFwiIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiXCIsIG91dF8iIC4gJHBhcmFtZXRlci0+bmFt
ZSAuICIpOyIpOwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9uLCAkb2Zmc2V0IC4g
InJlc3VsdC0+c2V0IiAuIHR5cGVUcmFpdHMoJHBhcmFtZXRlci0+dHlwZSwgIkpTT05UeXBlIikg
LiAiKFwiIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiXCIsIG91dF8iIC4gJHBhcmFtZXRlci0+bmFt
ZSAuICIpOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICB9Iik7CiAgICAgfQotICAg
IHB1c2goQGZ1bmN0aW9uLCAiICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KFwicmVzdWx0
XCIsIHJlc3VsdCk7Iik7Ci0gICAgcHVzaChAZnVuY3Rpb24sICIiKTsKLSAgICBwdXNoKEBmdW5j
dGlvbiwgIiAgICByZXNwb25zZU1lc3NhZ2UtPnNldE51bWJlcihcImlkXCIsIGNhbGxJZCk7Iik7
Ci0gICAgcHVzaChAZnVuY3Rpb24sICIgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVzc2FnZS0+dG9KU09OU3RyaW5n
KCkpOyIpOworICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIHNlbmRSZXNwb25zZShjYWxsSWQsIHJl
c3VsdCwgcHJvdG9jb2xFcnJvcnMsIGVycm9yKTsiKTsKICAgICBwdXNoKEBmdW5jdGlvbiwgIn0i
KTsKICAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOwogICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1w
bCwgQGZ1bmN0aW9uKTsKIH0KIAorc3ViIGdlbmVyYXRlQmFja2VuZFNlbmRSZXNwb25zZQorewor
ICAgIG15ICRzZW5kUmVzcG9uc2UgPSA8PCAiRU9GIjsKKwordm9pZCAke2JhY2tlbmRDbGFzc05h
bWV9OjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3RvY29sRXJyb3JzLCBFcnJv
clN0cmluZyBpbnZvY2F0aW9uRXJyb3IpCit7CisgICAgLy8gdXNlIEluc3BlY3RvckZyb250ZW5k
IGFzIGEgbWFya2VyIG9mIFdlYkluc3BlY3RvciBhdmFpbGFiaWxpdHkKKworICAgIGlmIChwcm90
b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKKyAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBJbnZhbGlkUGFyYW1zLCBwcm90b2NvbEVycm9ycyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgeworICAgICAgICByZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIFNlcnZlckVycm9yLCBpbnZvY2F0aW9uRXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9u
c2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICByZXNwb25zZU1lc3Nh
Z2UtPnNldE9iamVjdCgicmVzdWx0IiwgcmVzdWx0KTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNl
dE51bWJlcigiaWQiLCBjYWxsSWQpOworICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkKKyAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKK30gICAgCitFT0YKKyAgICBy
ZXR1cm4gc3BsaXQoIlxuIiwgJHNlbmRSZXNwb25zZSk7Cit9CisKIHN1YiBnZW5lcmF0ZUJhY2tl
bmRSZXBvcnRQcm90b2NvbEVycm9yCiB7CiAgICAgbXkgJHJlcG9ydFByb3RvY29sRXJyb3IgPSA8
PCAiRU9GIjsKQEAgLTU2Nyw3ICs1NzksNyBAQCBzdWIgZ2VuZXJhdGVBcmd1bWVudEdldHRlcnMK
ICAgICBteSAkcmV0dXJuICA9IHR5cGVUcmFpdHMoJHR5cGUsICJyZXR1cm4iKSA/IHR5cGVUcmFp
dHMoJHR5cGUsICJyZXR1cm4iKSA6IHR5cGVUcmFpdHMoJHR5cGUsICJwYXJhbSIpOwogCiAgICAg
bXkgJHR5cGVTdHJpbmcgPSBjYW1lbENhc2UoJHR5cGUpOwotICAgIHB1c2goQGJhY2tlbmRDb25z
dGFudERlY2xhcmF0aW9ucywgIiAgICAkcmV0dXJuIGdldCR0eXBlU3RyaW5nKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgb3B0aW9uYWwsIEluc3BlY3Rv
ckFycmF5KiBwcm90b2NvbEVycm9ycyk7Iik7CisgICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVj
bGFyYXRpb25zLCAiICAgIHN0YXRpYyAkcmV0dXJuIGdldCR0eXBlU3RyaW5nKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgb3B0aW9uYWwsIEluc3BlY3Rv
ckFycmF5KiBwcm90b2NvbEVycm9ycyk7Iik7CiAgICAgbXkgJGdldHRlckJvZHkgPSA8PCAiRU9G
IjsKIAogJHJldHVybiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0JHR5cGVTdHJpbmco
SW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBvcHRpb25h
bCwgSW5zcGVjdG9yQXJyYXkqIHByb3RvY29sRXJyb3JzKQpAQCAtMTA0NSw2ICsxMDU3LDcgQEAg
c3ViIGZpbmlzaAogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKIAogICAgIHB1c2goQGJhY2tlbmRN
ZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kRGlzcGF0Y2hlcigpKTsKKyAgICBwdXNoKEBiYWNr
ZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZFNlbmRSZXNwb25zZSgpKTsKICAgICBwdXNo
KEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZFJlcG9ydFByb3RvY29sRXJyb3Io
KSk7CiAgICAgdW5zaGlmdChAZnJvbnRlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVGcm9udGVuZENv
bnN0cnVjdG9ySW1wbCgpLCAiIik7CiAKQEAgLTEwNjcsNiArMTA4MCw5IEBAIHN1YiBmaW5pc2gK
ICAgICAgICAgICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVBcmd1bWVudEdl
dHRlcnMoJHR5cGUpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHB1c2goQGJhY2tlbmRDb25z
dGFudERlY2xhcmF0aW9ucywgIiAgICB2b2lkIHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gcHJvdG9jb2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcik7Iik7CisKICAg
ICBnZW5lcmF0ZUJhY2tlbmRBZ2VudEZpZWxkc0FuZENvbnN0cnVjdG9yKCk7CiAKICAgICBwdXNo
KEBiYWNrZW5kTWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZE1lc3NhZ2VQYXJzZXIoKSk7Cg==
</data>
<flag name="commit-queue"
          id="87783"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94603</attachid>
            <date>2011-05-24 06:35:56 -0700</date>
            <delta_ts>2011-05-24 07:12:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-63100</filename>
            <type>text/plain</type>
            <size>12988</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NDU3MzBkLi45ZTVlYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTEtMDUtMjQgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZW9yZ2FuaXplIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaCBjb2RlIHRvIGVsaW1p
bmF0ZSBkdXBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjEzMDAKKworICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnBtOgorCiAyMDExLTA1LTIzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmluZGV4IDFlNzQzMGUu
LjI5Mzk4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtCkBAIC00MTYsMTEgKzQxNiwxMSBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5k
RnVuY3Rpb24KICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKIAogICAgIG15ICRmdW5jdGlvbk5h
bWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKLSAgICBteSAkZnVsbFF1YWxpZmllZEZ1
bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWUgLiAiXyIgLiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZTsKLSAgICBteSAkZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZURvdCA9ICRpbnRlcmZh
Y2UtPm5hbWUgLiAiLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkZnVs
bFF1YWxpZmllZEZ1bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWUgLiAiXyIgLiAkZnVuY3Rp
b25OYW1lOworICAgIG15ICRmdWxsUXVhbGlmaWVkRnVuY3Rpb25OYW1lRG90ID0gJGludGVyZmFj
ZS0+bmFtZSAuICIuIiAuICRmdW5jdGlvbk5hbWU7CiAKLSAgICBwdXNoKEBiYWNrZW5kQ29uc3Rh
bnREZWNsYXJhdGlvbnMsICIgICAgc3RhdGljIGNvbnN0IGNoYXIqICR7ZnVsbFF1YWxpZmllZEZ1
bmN0aW9uTmFtZX1DbWQ7Iik7Ci0gICAgcHVzaChAYmFja2VuZENvbnN0YW50RGVmaW5pdGlvbnMs
ICJjb25zdCBjaGFyKiAke2JhY2tlbmRDbGFzc05hbWV9Ojoke2Z1bGxRdWFsaWZpZWRGdW5jdGlv
bk5hbWV9Q21kID0gXCIke2Z1bGxRdWFsaWZpZWRGdW5jdGlvbk5hbWVEb3R9XCI7Iik7CisgICAg
cHVzaChAYmFja2VuZENvbnN0YW50RGVjbGFyYXRpb25zLCAiICAgICAgICBrJHtmdWxsUXVhbGlm
aWVkRnVuY3Rpb25OYW1lfUNtZCwiKTsKKyAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWZpbml0
aW9ucywgIiAgICBcIiR7ZnVsbFF1YWxpZmllZEZ1bmN0aW9uTmFtZURvdH1cIiwiKTsKIAogICAg
IG1hcCgkYmFja2VuZFR5cGVzeyRfLT50eXBlfSA9IDEsIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fSk7ICMgcmVnaXN0ZXIgcmVxdWlyZWQgdHlwZXMKICAgICBteSBAaW5BcmdzID0gZ3JlcCgkXy0+
ZGlyZWN0aW9uIGVxICJpbiIsIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSk7CkBAIC00NTcsMTMg
KzQ1NywxNSBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAkaW5kZW50ID0g
IiI7CiAgICAgaWYgKHNjYWxhcihAaW5BcmdzKSkgewogICAgICAgICBwdXNoKEBmdW5jdGlvbiwg
IiAgICBpZiAoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyID0gcmVxdWVz
dE1lc3NhZ2VPYmplY3QtPmdldE9iamVjdChcInBhcmFtc1wiKSkgeyIpOworICAgICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICAgICAgSW5zcGVjdG9yT2JqZWN0KiBwYXJhbXNDb250YWluZXJQdHIg
PSBwYXJhbXNDb250YWluZXIuZ2V0KCk7Iik7CisgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAg
ICAgICBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnNQdHIgPSBwcm90b2NvbEVycm9ycy5n
ZXQoKTsiKTsKIAogICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEBpbkFyZ3MpIHsKICAg
ICAgICAgICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKICAgICAgICAgICAgIG15ICR0
eXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAgICAgICAgIG15ICR0eXBlU3RyaW5nID0gY2Ft
ZWxDYXNlKCRwYXJhbWV0ZXItPnR5cGUpOwogICAgICAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBh
cmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Im9wdGlvbmFsIn0gPyAidHJ1ZSIgOiAiZmFs
c2UiOwotICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgICIgLiB0eXBlVHJhaXRz
KCR0eXBlLCAidmFyaWFibGUiKSAuICIgaW5fJG5hbWUgPSBnZXQkdHlwZVN0cmluZyhwYXJhbXND
b250YWluZXIuZ2V0KCksIFwiJG5hbWVcIiwgJG9wdGlvbmFsLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7Iik7CisgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgIiAuIHR5cGVUcmFp
dHMoJHR5cGUsICJ2YXJpYWJsZSIpIC4gIiBpbl8kbmFtZSA9IGdldCR0eXBlU3RyaW5nKHBhcmFt
c0NvbnRhaW5lclB0ciwgXCIkbmFtZVwiLCAkb3B0aW9uYWwsIHByb3RvY29sRXJyb3JzUHRyKTsi
KTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOwogICAgICAgICAkaW5k
ZW50ID0gIiAgICAiOwpAQCAtNDgxLDQxICs0ODMsNTIgQEAgc3ViIGdlbmVyYXRlQmFja2VuZEZ1
bmN0aW9uCiAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIH0gZWxzZSIpOwogICAgICAgICBw
dXNoKEBmdW5jdGlvbiwgIiAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoXCIncGFy
YW1zJyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVjdCcgd2FzIG5vdCBmb3VuZC5cIik7Iik7CiAg
ICAgfQotCi0gICAgcHVzaChAZnVuY3Rpb24sICIiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAvLyB1c2UgSW5zcGVjdG9yRnJvbnRlbmQgYXMgYSBtYXJrZXIgb2YgV2ViSW5zcGVjdG9yIGF2
YWlsYWJpbGl0eSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiIik7Ci0gICAgcHVzaChAZnVuY3Rp
b24sICIgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgeyIpOwotICAgIHB1c2goQGZ1
bmN0aW9uLCAiICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEludmFsaWRQYXJh
bXMsIHByb3RvY29sRXJyb3JzKTsiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgcmV0
dXJuOyIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIH0iKTsKLSAgICBwdXNoKEBmdW5jdGlv
biwgIiIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIGlmIChlcnJvci5sZW5ndGgoKSkgeyIp
OwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIFNlcnZlckVycm9yLCBlcnJvcik7Iik7Ci0gICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAg
IHJldHVybjsiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICB9Iik7CiAgICAgcHVzaChAZnVu
Y3Rpb24sICIiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOyIpOwogICAg
IHB1c2goQGZ1bmN0aW9uLCAiICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Iik7Ci0gICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChA
b3V0QXJncykgewotICAgICAgICBteSAkb2Zmc2V0ID0gIiAgICAgICAgIjsKLSAgICAgICAgIyBE
b24ndCBhZGQgb3B0aW9uYWwgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gdGhlIHJlc3VsdCB1bmxlc3Mg
aXQgaXMgInRydWUiCi0gICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMt
Pnsib3B0aW9uYWwifSAmJiAkcGFyYW1ldGVyLT50eXBlIGVxICJib29sZWFuIikgewotICAgICAg
ICAgICAgcHVzaChAZnVuY3Rpb24sICRvZmZzZXQgLiAiaWYgKG91dF8iIC4gJHBhcmFtZXRlci0+
bmFtZSAuICIpIik7Ci0gICAgICAgICAgICAkb2Zmc2V0IC49ICIgICAgIjsKKyAgICBpZiAoc2Nh
bGFyKEBvdXRBcmdzKSkgeworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAoIXByb3Rv
Y29sRXJyb3JzLT5sZW5ndGgoKSAmJiAhZXJyb3IubGVuZ3RoKCkpIHsiKTsKKyAgICAgICAgZm9y
ZWFjaCBteSAkcGFyYW1ldGVyIChAb3V0QXJncykgeworICAgICAgICAgICAgbXkgJG9mZnNldCA9
ICIgICAgICAgICI7CisgICAgICAgICAgICAjIERvbid0IGFkZCBvcHRpb25hbCBib29sZWFuIHBh
cmFtZXRlciB0byB0aGUgcmVzdWx0IHVubGVzcyBpdCBpcyAidHJ1ZSIKKyAgICAgICAgICAgIGlm
ICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsib3B0aW9uYWwifSAmJiAkcGFyYW1l
dGVyLT50eXBlIGVxICJib29sZWFuIikgeworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
LCAkb2Zmc2V0IC4gImlmIChvdXRfIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiKSIpOworICAgICAg
ICAgICAgICAgICRvZmZzZXQgLj0gIiAgICAiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cHVzaChAZnVuY3Rpb24sICRvZmZzZXQgLiAicmVzdWx0LT5zZXQiIC4gdHlwZVRyYWl0cygkcGFy
YW1ldGVyLT50eXBlLCAiSlNPTlR5cGUiKSAuICIoXCIiIC4gJHBhcmFtZXRlci0+bmFtZSAuICJc
Iiwgb3V0XyIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIik7Iik7CiAgICAgICAgIH0KLSAgICAgICAg
cHVzaChAZnVuY3Rpb24sICRvZmZzZXQgLiAicmVzdWx0LT5zZXQiIC4gdHlwZVRyYWl0cygkcGFy
YW1ldGVyLT50eXBlLCAiSlNPTlR5cGUiKSAuICIoXCIiIC4gJHBhcmFtZXRlci0+bmFtZSAuICJc
Iiwgb3V0XyIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIik7Iik7CisgICAgICAgIHB1c2goQGZ1bmN0
aW9uLCAiICAgIH0iKTsKICAgICB9Ci0gICAgcHVzaChAZnVuY3Rpb24sICIgICAgcmVzcG9uc2VN
ZXNzYWdlLT5zZXRPYmplY3QoXCJyZXN1bHRcIiwgcmVzdWx0KTsiKTsKLSAgICBwdXNoKEBmdW5j
dGlvbiwgIiIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0
TnVtYmVyKFwiaWRcIiwgY2FsbElkKTsiKTsKLSAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBpZiAo
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIik7Ci0gICAgcHVzaChAZnVuY3Rpb24sICIgICAg
ICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVz
cG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7Iik7CisgICAgcHVzaChAZnVuY3Rpb24sICIg
ICAgc2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LCBwcm90b2NvbEVycm9ycywgZXJyb3IpOyIp
OwogICAgIHB1c2goQGZ1bmN0aW9uLCAifSIpOwogICAgIHB1c2goQGZ1bmN0aW9uLCAiIik7CiAg
ICAgcHVzaChAYmFja2VuZE1ldGhvZHNJbXBsLCBAZnVuY3Rpb24pOwogfQogCitzdWIgZ2VuZXJh
dGVCYWNrZW5kU2VuZFJlc3BvbnNlCit7CisgICAgbXkgJHNlbmRSZXNwb25zZSA9IDw8ICJFT0Yi
OworCit2b2lkICR7YmFja2VuZENsYXNzTmFtZX06OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JB
cnJheT4gcHJvdG9jb2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcikKK3sKKyAg
ICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7CisgICAgICAgIHJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgSW52YWxpZFBhcmFtcywgcHJvdG9jb2xFcnJvcnMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChpbnZvY2F0aW9uRXJyb3IubGVuZ3RoKCkpIHsKKyAgICAg
ICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBTZXJ2ZXJFcnJvciwgaW52b2NhdGlvbkVy
cm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3BvbnNlTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgcmVz
cG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoInJlc3VsdCIsIHJlc3VsdCk7CisgICAgcmVzcG9uc2VN
ZXNzYWdlLT5zZXROdW1iZXIoImlkIiwgY2FsbElkKTsKKyAgICBpZiAobV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7Cit9ICAgIAor
RU9GCisgICAgcmV0dXJuIHNwbGl0KCJcbiIsICRzZW5kUmVzcG9uc2UpOworfQorCiBzdWIgZ2Vu
ZXJhdGVCYWNrZW5kUmVwb3J0UHJvdG9jb2xFcnJvcgogewogICAgIG15ICRyZXBvcnRQcm90b2Nv
bEVycm9yID0gPDwgIkVPRiI7CkBAIC01NjcsNyArNTgwLDcgQEAgc3ViIGdlbmVyYXRlQXJndW1l
bnRHZXR0ZXJzCiAgICAgbXkgJHJldHVybiAgPSB0eXBlVHJhaXRzKCR0eXBlLCAicmV0dXJuIikg
PyB0eXBlVHJhaXRzKCR0eXBlLCAicmV0dXJuIikgOiB0eXBlVHJhaXRzKCR0eXBlLCAicGFyYW0i
KTsKIAogICAgIG15ICR0eXBlU3RyaW5nID0gY2FtZWxDYXNlKCR0eXBlKTsKLSAgICBwdXNoKEBi
YWNrZW5kQ29uc3RhbnREZWNsYXJhdGlvbnMsICIgICAgJHJldHVybiBnZXQkdHlwZVN0cmluZyhJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIG9wdGlvbmFs
LCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOyIpOworICAgIHB1c2goQGJhY2tlbmRD
b25zdGFudERlY2xhcmF0aW9ucywgIiAgICBzdGF0aWMgJHJldHVybiBnZXQkdHlwZVN0cmluZyhJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIG9wdGlvbmFs
LCBJbnNwZWN0b3JBcnJheSogcHJvdG9jb2xFcnJvcnMpOyIpOwogICAgIG15ICRnZXR0ZXJCb2R5
ID0gPDwgIkVPRiI7CiAKICRyZXR1cm4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldCR0
eXBlU3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgb3B0aW9uYWwsIEluc3BlY3RvckFycmF5KiBwcm90b2NvbEVycm9ycykKQEAgLTU5Nyw3ICs2
MTAsNyBAQCBFT0YKIHN1YiBnZW5lcmF0ZUJhY2tlbmREaXNwYXRjaGVyCiB7CiAgICAgbXkgQGJv
ZHk7Ci0gICAgbXkgQG1hcEVudHJpZXMgPSBtYXAoIiAgICAgICAgZGlzcGF0Y2hNYXAuYWRkKCR7
X31DbWQsICYke2JhY2tlbmRDbGFzc05hbWV9OjokXyk7IiwgbWFwICgkYmFja2VuZE1ldGhvZFNp
Z25hdHVyZXN7JF99LCBAYmFja2VuZE1ldGhvZHMpKTsKKyAgICBteSBAbWFwRW50cmllcyA9IG1h
cCgiICAgICAgICAmJHtiYWNrZW5kQ2xhc3NOYW1lfTo6JF8sIiwgbWFwICgkYmFja2VuZE1ldGhv
ZFNpZ25hdHVyZXN7JF99LCBAYmFja2VuZE1ldGhvZHMpKTsKICAgICBteSAkbWFwRW50cmllcyA9
IGpvaW4oIlxuIiwgQG1hcEVudHJpZXMpOwogCiAgICAgbXkgJGJhY2tlbmREaXNwYXRjaGVyQm9k
eSA9IDw8ICJFT0YiOwpAQCAtNjEwLDcgKzYyMywxMiBAQCB2b2lkICR7YmFja2VuZENsYXNzTmFt
ZX06OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBsb25nIGNhbGxJZCA9IDA7
CiAKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIHN0YXRpYyBDYWxs
SGFuZGxlciBoYW5kbGVyc1tdID0gewogJG1hcEVudHJpZXMKKyAgICAgICAgfTsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHNpemVvZihjb21tYW5kTmFtZXMpIC8gc2l6ZW9mKGNvbW1hbmROYW1l
c1swXSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBkaXNwYXRjaE1hcC5hZGQoY29tbWFuZE5hbWVzW2ldLCBoYW5kbGVyc1tpXSk7CiAg
ICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwYXJzZWRNZXNzYWdlID0gSW5zcGVj
dG9yVmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsKQEAgLTEwMzcsNiArMTA1NSw4IEBAIHN1YiBn
ZW5lcmF0ZUJhY2tlbmRBZ2VudEZpZWxkc0FuZENvbnN0cnVjdG9yCiAgICAgcHVzaChAYmFja2Vu
ZEhlYWQsICIgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNh
bGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBkYXRhKSBj
b25zdDsiKTsKICAgICBwdXNoKEBiYWNrZW5kSGVhZCwgIiAgICB2b2lkIGRpc3BhdGNoKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Iik7CiAgICAgcHVzaChAYmFja2VuZEhlYWQsICIgICAgc3RhdGlj
IGJvb2wgZ2V0Q29tbWFuZE5hbWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBTdHJpbmcqIHJlc3Vs
dCk7Iik7CisgICAgcHVzaChAYmFja2VuZEhlYWQsICIiKTsKKyAgICBwdXNoKEBiYWNrZW5kSGVh
ZCwgIiAgICBlbnVtIE1ldGhvZE5hbWVzIHsiKTsKICAgICAkYmFja2VuZENvbnN0cnVjdG9yID0g
am9pbigiXG4iLCBAYmFja2VuZEhlYWQpOwogfQogCkBAIC0xMDQ1LDYgKzEwNjUsNyBAQCBzdWIg
ZmluaXNoCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogCiAgICAgcHVzaChAYmFja2VuZE1ldGhv
ZHNJbXBsLCBnZW5lcmF0ZUJhY2tlbmREaXNwYXRjaGVyKCkpOworICAgIHB1c2goQGJhY2tlbmRN
ZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kU2VuZFJlc3BvbnNlKCkpOwogICAgIHB1c2goQGJh
Y2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVCYWNrZW5kUmVwb3J0UHJvdG9jb2xFcnJvcigpKTsK
ICAgICB1bnNoaWZ0KEBmcm9udGVuZE1ldGhvZHNJbXBsLCBnZW5lcmF0ZUZyb250ZW5kQ29uc3Ry
dWN0b3JJbXBsKCksICIiKTsKIApAQCAtMTA1OCw3ICsxMDc5LDEzIEBAIHN1YiBmaW5pc2gKICAg
ICBjbG9zZSgkSEVBREVSKTsKICAgICB1bmRlZigkSEVBREVSKTsKIAorICAgIHVuc2hpZnQoQGJh
Y2tlbmRDb25zdGFudERlZmluaXRpb25zLCAiY29uc3QgY2hhciogSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmNvbW1hbmROYW1lc1tdID0geyIpOworICAgIHB1c2goQGJhY2tlbmRDb25zdGFu
dERlZmluaXRpb25zLCAifTsiKTsKKwogICAgICMgTWFrZSBkaXNwYXRjaGVyIG1ldGhvZHMgcHJp
dmF0ZSBvbiB0aGUgYmFja2VuZC4KKyAgICBwdXNoKEBiYWNrZW5kQ29uc3RhbnREZWNsYXJhdGlv
bnMsICJ9OyIpOworICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywgIiIpOwor
ICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywgIiAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29tbWFuZE5hbWVzW107Iik7ICAgIAogICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERl
Y2xhcmF0aW9ucywgIiIpOwogICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xhcmF0aW9ucywg
InByaXZhdGU6Iik7CiAKQEAgLTEwNjcsNiArMTA5NCw5IEBAIHN1YiBmaW5pc2gKICAgICAgICAg
ICAgIHB1c2goQGJhY2tlbmRNZXRob2RzSW1wbCwgZ2VuZXJhdGVBcmd1bWVudEdldHRlcnMoJHR5
cGUpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHB1c2goQGJhY2tlbmRDb25zdGFudERlY2xh
cmF0aW9ucywgIiAgICB2b2lkIHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvdG9j
b2xFcnJvcnMsIEVycm9yU3RyaW5nIGludm9jYXRpb25FcnJvcik7Iik7CisKICAgICBnZW5lcmF0
ZUJhY2tlbmRBZ2VudEZpZWxkc0FuZENvbnN0cnVjdG9yKCk7CiAKICAgICBwdXNoKEBiYWNrZW5k
TWV0aG9kc0ltcGwsIGdlbmVyYXRlQmFja2VuZE1lc3NhZ2VQYXJzZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDM3NDc2YWMuLjM5OTk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMjQgIE1pa2hhaWwgTmFnYW5vdiAgPG1u
YWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW9yZ2FuaXplIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaCBjb2RlIHRvIGVsaW1pbmF0ZSBkdXBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzMDAKKworICAgICAgICAqIHNyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnQ6
OnNob3VsZEludGVycnVwdEZvck1lc3NhZ2UpOgorCiAyMDExLTA1LTIzICBHYXZpbiBQZXRlcnMg
IDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKaW5kZXggYjhkMzMwYS4uNjhmYTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtMzQ0LDE0ICszNDQsMTQg
QEAgYm9vbCBXZWJEZXZUb29sc0FnZW50OjpzaG91bGRJbnRlcnJ1cHRGb3JNZXNzYWdlKGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSkKICAgICBTdHJpbmcgY29tbWFuZE5hbWU7CiAgICAgaWYgKCFJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Q29tbWFuZE5hbWUobWVzc2FnZSwgJmNvbW1h
bmROYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb21tYW5kTmFtZSA9
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGVidWdnZXJfcGF1c2VDbWQKLSAgICAgICAg
fHwgY29tbWFuZE5hbWUgPT0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRlYnVnZ2VyX3Nl
dEJyZWFrcG9pbnRDbWQKLSAgICAgICAgfHwgY29tbWFuZE5hbWUgPT0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkRlYnVnZ2VyX3NldEJyZWFrcG9pbnRCeVVybENtZAotICAgICAgICB8fCBj
b21tYW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGVidWdnZXJfcmVtb3Zl
QnJlYWtwb2ludENtZAotICAgICAgICB8fCBjb21tYW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6RGVidWdnZXJfc2V0QnJlYWtwb2ludHNBY3RpdmVDbWQKLSAgICAgICAgfHwg
Y29tbWFuZE5hbWUgPT0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlByb2ZpbGVyX3N0YXJ0
Q21kCi0gICAgICAgIHx8IGNvbW1hbmROYW1lID09IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpQcm9maWxlcl9zdG9wQ21kCi0gICAgICAgIHx8IGNvbW1hbmROYW1lID09IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpQcm9maWxlcl9nZXRQcm9maWxlQ21kOworICAgIHJldHVybiBjb21t
YW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZE5hbWVzW0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjprRGVidWdnZXJfcGF1c2VDbWRdCisgICAgICAgIHx8IGNv
bW1hbmROYW1lID09IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXNbSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmtEZWJ1Z2dlcl9zZXRCcmVha3BvaW50Q21kXQorICAg
ICAgICB8fCBjb21tYW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFu
ZE5hbWVzW0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjprRGVidWdnZXJfc2V0QnJlYWtwb2lu
dEJ5VXJsQ21kXQorICAgICAgICB8fCBjb21tYW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Y29tbWFuZE5hbWVzW0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjprRGVidWdn
ZXJfcmVtb3ZlQnJlYWtwb2ludENtZF0KKyAgICAgICAgfHwgY29tbWFuZE5hbWUgPT0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmROYW1lc1tJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6a0RlYnVnZ2VyX3NldEJyZWFrcG9pbnRzQWN0aXZlQ21kXQorICAgICAgICB8fCBjb21t
YW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZE5hbWVzW0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjprUHJvZmlsZXJfc3RhcnRDbWRdCisgICAgICAgIHx8IGNv
bW1hbmROYW1lID09IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kTmFtZXNbSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmtQcm9maWxlcl9zdG9wQ21kXQorICAgICAgICB8fCBj
b21tYW5kTmFtZSA9PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZE5hbWVzW0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjprUHJvZmlsZXJfZ2V0UHJvZmlsZUNtZF07CiB9CiAK
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudDo6cHJvY2Vzc1BlbmRpbmdNZXNzYWdlcygpCg==
</data>
<flag name="review"
          id="87924"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="87925"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>