<?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>112711</bug_id>
          
          <creation_ts>2013-03-19 10:10:55 -0700</creation_ts>
          <short_desc>[JSC] Don&apos;t create a JSValue if it&apos;s not going to be used for nullable attributes</short_desc>
          <delta_ts>2013-04-02 11:42:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>113812</dependson>
          <blocked>112910</blocked>
    
    <blocked>111728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Beverloo">peter</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>rego+ews</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858407</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 10:10:55 -0700</bug_when>
    <thetext>[JSC] Don&apos;t create a JSValue if it&apos;s not going to be used for nullable attributes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858411</commentid>
    <comment_count>1</comment_count>
      <attachid>193850</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 10:12:46 -0700</bug_when>
    <thetext>Created attachment 193850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858428</commentid>
    <comment_count>2</comment_count>
      <attachid>193850</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 10:25:17 -0700</bug_when>
    <thetext>Comment on attachment 193850
Patch

Ack -- let&apos;s check out the Gtk build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858506</commentid>
    <comment_count>3</comment_count>
      <attachid>193873</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-19 11:18:54 -0700</bug_when>
    <thetext>Created attachment 193873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858880</commentid>
    <comment_count>4</comment_count>
      <attachid>193873</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 17:03:48 -0700</bug_when>
    <thetext>Comment on attachment 193873
Patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:746
&gt; +    TestObj* nativeResult = impl-&gt;withScriptExecutionContextAttributeRaises(scriptContext, ec);
&gt;      setDOMException(exec, ec);
&gt; -    return result;
&gt; +    return toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(nativeResult));

TestObj* is already a raw pointer. Do we need WTF::getPtr() ?

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:772
&gt; +    TestObj* nativeResult = impl-&gt;withScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, ec);
&gt;      setDOMException(exec, ec);
&gt; -    return result;
&gt; +    return toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(nativeResult));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860326</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-21 07:43:52 -0700</bug_when>
    <thetext>This caused the failure on the GTK bot (which uses JSC bindings and enables IndexedDB).  The IDBRequest object returns a PassRefPtr&lt;&gt; instead of raw pointers:

http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h#L59

Previously this was caught by the WebCore impl call being encapsulated by WTF::getPtr(), but now that we&apos;re storing the value to a local variable this isn&apos;t the case anymore.

All other bindings seem to return raw pointers. Should I modify IDBRequest (and potential other places) to do this instead, which makes the call to WTF::getPtr() obsolute?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860330</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-21 07:46:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; All other bindings seem to return raw pointers. Should I modify IDBRequest (and potential other places) to do this instead, which makes the call to WTF::getPtr() obsolute?

Sounds reasonable to me, as long as it does not have side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861768</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-22 12:37:08 -0700</bug_when>
    <thetext>This paradigm seems to be quite frequently used within IndexedDB and I&apos;m not sure how to fix it.  I&apos;ll give an example.

The IDBDatabase.version attribute[1] is defined in the IDL file as a readonly IDBAny, as it can return an integer or a string.  The implementation allocates a new instance of IDBAny containing the return value (in a PassRefPtr) and immediately returns this to the generated binding code.  The V8 bindings generator special-cases readonly attributes[2] and creates the following call:

RefPtr&lt;IDBAny&gt; result = imp-&gt;version();

The JSC code generator doesn&apos;t do this, and gets the raw pointer value by calling WTF::getPtr(PassRefPtr&lt;&gt;), which comes down to PassRefPtr&lt;&gt;.get().  The call to IDBDatabase::version() created by JSC therefore looks like this:

JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl-&gt;version()));

This causes us to loose the PassRefPtr&lt;&gt; instance, which is therefore destroyed and frees up the pointer it owned, as this was the only reference to it.  Unless the PassRefPtr&lt;&gt; somehow leaks instead of gets destroyed, this seems to be a use after free?  Or do we get &quot;lucky&quot; and is the PassRefPtr&lt;&gt; destroyed after the call to toJS()?

I won&apos;t have time next week to deeply look in to this, and it seems to be rather IDB specific as it is.

[1] http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp?rev=146636#L134
[2] http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm?rev=146636#L1113

-----

I just uploaded the third patch, as I realized results in the second patch weren&apos;t properly rebased.

I&apos;m not happy with needing a NativeValueToLocal() method at all, which uses the heuristic of &quot;pointers end with a star&quot; to determine whether WTF::getPtr() should be used.  In toJS() we then call it again.  While this is a no-op that the compiler will optimize away, I&apos;m not sure what the proper way is to get rid of this.  Any advice from the bindings experts here would be appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861770</commentid>
    <comment_count>8</comment_count>
      <attachid>194619</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-03-22 12:37:46 -0700</bug_when>
    <thetext>Created attachment 194619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861939</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-22 16:06:20 -0700</bug_when>
    <thetext>sam: would you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868071</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2013-04-02 11:10:56 -0700</bug_when>
    <thetext>Committed r147464: &lt;http://trac.webkit.org/changeset/147464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868120</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-02 11:42:02 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 113812</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193850</attachid>
            <date>2013-03-19 10:12:46 -0700</date>
            <delta_ts>2013-03-19 11:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112711-20130319170836.patch</filename>
            <type>text/plain</type>
            <size>16577</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2YTc2ODE2YjgyOWU1
OTllZmE1NTVlMjZhNzg4NDA2MDQyNzA4OS4uMjM2OWMwNTUxZDk5Yzg3OGE1MTQyY2U0ZTAzZmVm
YzljNGQ1MzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAzLTE5ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBEb24ndCBj
cmVhdGUgYSBKU1ZhbHVlIGlmIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHVzZWQgZm9yIG51bGxhYmxl
IGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjcxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gbnVsbGFibGUgYXR0cmlidXRlcyBhcmUgdXNlZCwgaXQncyBwb3NzaWJsZSB0aGF0
IHdlIGRpc3JlZ2FyZCB0aGUgSlNWYWx1ZQorICAgICAgICB3aGVuIG51bGwgc2hvdWxkIGJlIHJl
dHVybmVkIGluc3RlYWQuIFRoaXMgaXMgYSB3YXN0ZSwgYW5kIHdlIHNob3VsZCBjYXN0IHRoZQor
ICAgICAgICBuYXRpdmUgdHlwZSB0byBhIEpTVmFsdWUgYXMgbGF0ZSBhcyBwb3NzaWJsZS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24p
OgorCiAyMDEzLTAzLTE5ICBTZXJnZXkgUnlhemFub3YgIDxzZXJ5YUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgQ29uc29sZSBpbnRvIHR3byBlbnRpdGllcywg
YSB3ZWItZmFjaW5nIGJvdW5kIG9iamVjdCBhbmQgcGFnZSBjb25zb2xlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjZWU5
YmRkYjNjZjc0OTIwMjdlMDhhYmU2ZWM0NGMyM2FkM2QzMTU4Li43YzAxZDM2YTZhN2Y4MGUxZGYx
M2NjYWI0ODBhYjgxM2E3YjA2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTgyOCw2ICsxODI4LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICBteSAkaXNOdWxsYWJsZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgICAgICAgICBteSAkaXND
YWNoZWRBdHRyaWJ1dGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWNoZWRBdHRyaWJ1dGUifTsKICAgICAgICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+
QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKICAgICAgICAgICAgICAgICBteSAkZ2V0RnVu
Y3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkbmFtZSk7CkBAIC0xODQ0LDcgKzE4
NDUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCRpc0NhY2hlZEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgICAgICAkbmVl
ZHNNYXJrQ2hpbGRyZW4gPSAxOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTg5Myw3ICsxODk0
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYm9vbCBpc051bGwgPSBmYWxzZTtcbiIpIGlmICRpc051bGxh
YmxlOwogCiAgICAgICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhY2hlZEF0dHJpYnV0ZSJ9KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkaXNDYWNo
ZWRBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZUluZGV4ID0gJGN1
cnJlbnRDYWNoZWRBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudENh
Y2hlZEF0dHJpYnV0ZSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tXyIgLiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC0xOTAxLDYgKzE5MDIs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAgICAgbXkgQGNhbGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwg
XEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgbXkg
JHJldHVyblZhbHVlID0gInJlc3VsdCI7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdM
aXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRUaGlzLT5pbXBsKCktPiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIp
IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKQEAgLTE5MjgsMjMgKzE5MzAsMzAgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChA
YXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRl
cmZhY2VOYW1lLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4g
IikiLCAiY2FzdGVkVGhpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW50ZXJmYWNl
TmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0
ZWRUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlwZTtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIG9iai5nZXQoKSk7XG4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBl
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkaXNOdWxsYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRu
YXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgbmF0aXZlUmVzdWx0ID0g
JGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVs
bClcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4ganNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGlzQ2FjaGVkQXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRv
SlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibmF0aXZl
UmVzdWx0IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVmFs
dWUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNl
TmFtZSwgIm5hdGl2ZVJlc3VsdCIsICJjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4o
IiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqLmdldCgpKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlw
ZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSAuICIuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgY2FzdGVkVGhpcywgcmVzdWx0
KTtcbiIpIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWNoZWRBdHRyaWJ1dGUifSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xuIikg
aWYgJGlzQ2FjaGVkQXR0cmlidXRlOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gJHJldHVyblZhbHVlO1xuIik7CiAKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOwpAQCAt
MTk1NiwxMyArMTk2NSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBH
ZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIikpOworICAgICAg
ICAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJHR5cGUpOwogCiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBpbXBsKCpjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigi
LCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlIG5hdGl2
ZVJlc3VsdCA9IGltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUq
IGltcGwgPSBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgi
IC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVU
eXBlIG5hdGl2ZVJlc3VsdCA9IGltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2lu
KCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgewpAQCAtMTk3MSw3ICsxOTgxLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibmF0aXZlUmVzdWx0IiwgImNhc3RlZFRoaXMiKSAu
ICI7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE5ZDQ5OTJmMTBkMjkyOTlkZjA5OGQ0
MzYzYTQyNzJiMmQ3YmZlNWQuLjg4ZWZkOWIzOTJjMjRiMmI2MzVmZjVkNTVkM2I3MTY3OTM4OWMy
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCkBAIC02NTcsOSArNjU3LDkgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
b3AKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
KGVjKSk7CisgICAgaW50IG5hdGl2ZVJlc3VsdCA9IGltcGwtPmF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3VsdCk7CiB9CiAKIApAQCAtNjc4LDkg
KzY3OCw5IEBAIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBpbXBsLT5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykp
OworICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlUmVzdWx0ID0gaW1wbC0+c3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgbmF0aXZl
UmVzdWx0KTsKIH0KIAogCkBAIC03MjcsOSArNzI3LDkgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXMKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhleGVjLCBl
YykpKTsKKyAgICBUZXN0T2JqKiBuYXRpdmVSZXN1bHQgPSBpbXBsLT53aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoZXhlYywgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIobmF0aXZlUmVzdWx0KSk7CiB9CiAKIApAQCAtNzQx
LDkgKzc0MSw5IEBAIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgaWYgKCFzY3JpcHRDb250
ZXh0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNj
cmlwdENvbnRleHQsIGVjKSkpOworICAgIFRlc3RPYmoqIG5hdGl2ZVJlc3VsdCA9IGltcGwtPndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVj
KTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKG5hdGl2ZVJlc3VsdCkpOwogfQogCiAKQEAgLTc2Nyw5ICs3NjcsOSBAQCBKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YQogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGV4ZWMsIHNjcmlw
dENvbnRleHQsIGVjKSkpOworICAgIFRlc3RPYmoqIG5hdGl2ZVJlc3VsdCA9IGltcGwtPndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywg
c2NyaXB0Q29udGV4dCwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIobmF0aXZlUmVzdWx0KSk7CiB9CiAKIApAQCAtOTg3LDEwICs5
ODcsMTAgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3AKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpKTsKKyAgICBkb3Vi
bGUgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAogCkBAIC0xMDAw
LDEwICsxMDAwLDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVyCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOworICAg
IGludCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAogCkBAIC0xMDEz
LDEwICsxMDEzLDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGltcGwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpKTsK
KyAgICBib29sIG5hdGl2ZVJlc3VsdCA9IGltcGwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBqc0Jvb2xlYW4obmF0aXZlUmVzdWx0KTsKIH0KIAog
CkBAIC0xMDI2LDEwICsxMDI2LDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wCiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+bnVsbGFibGVTdHJp
bmdBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVSZXN1bHQgPSBp
bXBsLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpOwogICAgIGlmIChpc051bGwpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBuYXRpdmVSZXN1bHQpOwogfQogCiAKQEAgLTEwMzksMTAg
KzEwMzksMTAgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsK
KyAgICBpbnQgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUoaXNOdWxsKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0K
IAogCkBAIC0xMDUyLDExICsxMDUyLDExIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJp
bmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0
T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0g
ICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlU3RyaW5nVmFs
dWUoaXNOdWxsLCBlYykpOworICAgIGludCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5udWxsYWJsZVN0
cmluZ1ZhbHVlKGlzTnVsbCwgZWMpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBq
c051bGwoKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3VsdCk7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKaW5kZXggYWM1MDBiNWU3NmRkYjg5MGI2Y2FkNjJkZTJiZGIxN2EzYmQwNjI3My4u
NDNkYjBiMDZjNWJkODE4Mzc0MjI4MzQ0YjM0OWQxYzkxNTk0YWFjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRl
ZnMuY3BwCkBAIC0yMjUsOSArMjI1LDkgQEAgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdFR5cGVk
ZWZzKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdFR5cGVkZWZzKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+YXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBpbnQgbmF0aXZlUmVzdWx0ID0gaW1wbC0+YXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAog
CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG8KICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdFR5cGVkZWZzKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdFR5cGVkZWZzKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2
ZVJlc3VsdCA9IGltcGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG5hdGl2ZVJlc3VsdCk7CiB9CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193873</attachid>
            <date>2013-03-19 11:18:54 -0700</date>
            <delta_ts>2013-03-22 12:37:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112711-20130319181444.patch</filename>
            <type>text/plain</type>
            <size>16995</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2M2YzZTc1ODhkMWY4
YTM2NjA4ZDE4NWY4NGQzNGI5ZmI4NWY1Ny4uMjA5YTk5NDg5MmVkNTljOTI4ZDlhMjM1NmI5Zjk3
MTliYjgyNGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTE5ICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBEb24ndCBj
cmVhdGUgYSBKU1ZhbHVlIGlmIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHVzZWQgZm9yIG51bGxhYmxl
IGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjcxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gbnVsbGFibGUgYXR0cmlidXRlcyBhcmUgdXNlZCwgaXQncyBwb3NzaWJsZSB0aGF0
IHdlIGRpc3JlZ2FyZCB0aGUgSlNWYWx1ZQorICAgICAgICB3aGVuIG51bGwgc2hvdWxkIGJlIHJl
dHVybmVkIGluc3RlYWQuIFRoaXMgaXMgYSB3YXN0ZSwgYW5kIHdlIHNob3VsZCBjYXN0IHRoZQor
ICAgICAgICBuYXRpdmUgdHlwZSB0byBhIEpTVmFsdWUgYXMgbGF0ZSBhcyBwb3NzaWJsZS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChOYXRpdmVWYWx1ZVRvTG9jYWwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKwogMjAxMy0wMy0xOSAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1lcmdlIE1haW5SZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCBpbnRvIERvY3VtZW50TG9hZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGNlZTli
ZGRiM2NmNzQ5MjAyN2UwOGFiZTZlYzQ0YzIzYWQzZDMxNTguLjA3NDQ1N2U1ZTAzYmUyOGQ3N2M3
ZDg1ZTZlMWQzMDgxZmZjZTIxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xODI4LDYgKzE4MjgsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgIG15ICRpc051bGxhYmxlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOworICAgICAgICAgICAgICAgIG15ICRpc0Nh
Y2hlZEF0dHJpYnV0ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhY2hlZEF0dHJpYnV0ZSJ9OwogICAgICAgICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5B
c3NlcnROb3RTZXF1ZW5jZVR5cGUoJHR5cGUpOwogICAgICAgICAgICAgICAgIG15ICRnZXRGdW5j
dGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRuYW1lKTsKQEAgLTE4NDQsNyArMTg0
NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKKyAgICAgICAgICAg
ICAgICBpZiAoJGlzQ2FjaGVkQXR0cmlidXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICRuZWVk
c01hcmtDaGlsZHJlbiA9IDE7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xODkzLDcgKzE4OTQs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBib29sIGlzTnVsbCA9IGZhbHNlO1xuIikgaWYgJGlzTnVsbGFi
bGU7CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRpc0NhY2hl
ZEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlSW5kZXggPSAkY3Vy
cmVudENhY2hlZEF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50Q2Fj
aGVkQXR0cmlidXRlKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fIiAuICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKQEAgLTE5MDEsNiArMTkwMiw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aCgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBc
QGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIpOworICAgICAgICAgICAgICAgICAgICBteSAk
cmV0dXJuVmFsdWUgPSAicmVzdWx0IjsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS0+JGlt
cGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIiki
LCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwpAQCAtMTkyOCwyMyArMTkzMCwzMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBh
cmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBteSAk
anNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVy
ZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSIsICJjYXN0ZWRUaGlzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbnRlcmZhY2VO
YW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRl
ZFR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgUmVmUHRyPCR0eXBlPiBvYmogPSAkanNUeXBlO1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQg
PSAgdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqLmdldCgpKTtcbiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5cGU7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRpc051bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5h
dGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCR0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkbmF0aXZlVHlwZSBuYXRpdmVSZXN1bHQgPSAi
IC4gTmF0aXZlVmFsdWVUb0xvY2FsKCIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1
bWVudHMpIC4gIikiLCAkbmF0aXZlVHlwZSkgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlzTnVsbClcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
anNOdWxsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzQ2FjaGVk
QXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibmF0aXZlUmVzdWx0IiwgImNhc3Rl
ZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVmFsdWUgPSBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIm5hdGl2ZVJl
c3VsdCIsICJjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50
cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR0eXBl
PiBvYmogPSAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqLmdldCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGNhc3RlZFRoaXMtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgY2FzdGVkVGhpcywgcmVzdWx0KTtcbiIpIGlmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUi
fSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBy
ZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xuIikgaWYgJGlzQ2FjaGVkQXR0
cmlidXRlOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gJHJldHVyblZhbHVlO1xuIik7CiAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOwpAQCAtMTk1NiwxMyArMTk2NSwx
NCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRo
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0s
IFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIikpOworICAgICAgICAgICAgICAgICAgICBt
eSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJHR5cGUpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3Bl
cnR5VHlwZSBpbXBsKCpjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAu
IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1l
LCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRz
KSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlIG5hdGl2ZVJlc3VsdCA9ICIgLiBO
YXRpdmVWYWx1ZVRvTG9jYWwoImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4o
IiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICRuYXRpdmVUeXBlKSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGludGVyZmFj
ZU5hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1w
bC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkbmF0aXZlVHlwZSBuYXRpdmVSZXN1bHQgPSAiIC4gTmF0aXZl
VmFsdWVUb0xvY2FsKCJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAi
LCBAYXJndW1lbnRzKSAuICIpIiwgJG5hdGl2ZVR5cGUpIC4gIjtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc051bGxhYmxlKSB7CkBAIC0x
OTcxLDcgKzE5ODEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJuYXRpdmVSZXN1bHQiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTMyMDAsNiArMzIxMCwxNSBAQCBz
dWIgSXNOYXRpdmVUeXBlCiAgICAgcmV0dXJuIGV4aXN0cyAkbmF0aXZlVHlwZXskdHlwZX07CiB9
CiAKK3N1YiBOYXRpdmVWYWx1ZVRvTG9jYWwKK3sKKyAgICBteSAkdmFsdWUgPSBzaGlmdDsKKyAg
ICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICJXVEY6OmdldFB0cigkdmFsdWUpIiBp
ZiAkdHlwZSA9fiAvXCokLzsKKyAgICByZXR1cm4gJHZhbHVlOworfQorCiBzdWIgSlNWYWx1ZVRv
TmF0aXZlCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBhOWQ0
OTkyZjEwZDI5Mjk5ZGYwOThkNDM2M2E0MjcyYjJkN2JmZTVkLi44OGVmZDliMzkyYzI0YjJiNjM1
ZmY1ZDU1ZDNiNzE2NzkzODljMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNjU3LDkgKzY1Nyw5IEBAIEpT
VmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT5hdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihlYykpOworICAgIGludCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5h
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBqc051bWJlcihuYXRpdmVSZXN1bHQp
OwogfQogCiAKQEAgLTY3OCw5ICs2NzgsOSBAQCBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZQogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90
QmFzZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RPYmoqIGltcGwgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVJlc3VsdCA9IGlt
cGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIG5hdGl2ZVJlc3VsdCk7CiB9CiAKIApAQCAtNzI3LDkgKzcyNyw5IEBAIEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoZXhlYywgZWMpKSk7CisgICAgVGVzdE9iaiogbmF0aXZlUmVzdWx0ID0gaW1w
bC0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGV4ZWMsIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKG5hdGl2ZVJlc3Vs
dCkpOwogfQogCiAKQEAgLTc0MSw5ICs3NDEsOSBAQCBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQog
ICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBlYykpKTsKKyAgICBUZXN0T2JqKiBuYXRp
dmVSZXN1bHQgPSBpbXBsLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cyhzY3JpcHRDb250ZXh0LCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihuYXRpdmVSZXN1bHQpKTsKIH0KIAogCkBAIC03NjcsOSAr
NzY3LDkgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGEKICAgICBpZiAoIXNjcmlwdENvbnRleHQp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyhleGVjLCBzY3JpcHRDb250ZXh0LCBlYykpKTsKKyAgICBUZXN0T2JqKiBuYXRpdmVS
ZXN1bHQgPSBpbXBsLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKGV4ZWMsIHNjcmlwdENvbnRleHQsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKG5hdGl2ZVJlc3VsdCkpOwog
fQogCiAKQEAgLTk4NywxMCArOTg3LDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wCiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9i
aiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUo
aXNOdWxsKSk7CisgICAgZG91YmxlIG5hdGl2ZVJlc3VsdCA9IGltcGwtPm51bGxhYmxlRG91Ymxl
QXR0cmlidXRlKGlzTnVsbCk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3Vs
dCk7CiB9CiAKIApAQCAtMTAwMCwxMCArMTAwMCwxMCBAQCBKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cgogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAg
IFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlTG9uZ0F0dHJp
YnV0ZShpc051bGwpKTsKKyAgICBpbnQgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVMb25n
QXR0cmlidXRlKGlzTnVsbCk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3Vs
dCk7CiB9CiAKIApAQCAtMTAxMywxMCArMTAxMywxMCBAQCBKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFBy
bwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAg
IFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLT5udWxsYWJsZUJvb2xlYW5B
dHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgYm9vbCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5udWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNCb29sZWFuKG5h
dGl2ZVJlc3VsdCk7CiB9CiAKIApAQCAtMTAyNiwxMCArMTAyNiwxMCBAQCBKU1ZhbHVlIGpzVGVz
dE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcAogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBib29sIGlzTnVsbCA9IGZh
bHNlOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwtPm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOworICAgIGNvbnN0IFN0cmlu
ZyYgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgbmF0aXZlUmVzdWx0KTsK
IH0KIAogCkBAIC0xMDM5LDEwICsxMDM5LDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlCiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgaW50IG5hdGl2ZVJlc3VsdCA9IGltcGwtPm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlKGlzTnVsbCk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVy
KG5hdGl2ZVJlc3VsdCk7CiB9CiAKIApAQCAtMTA1MiwxMSArMTA1MiwxMSBAQCBKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBQcm9wZXJ0eQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNOdWxs
ID0gZmFsc2U7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LT5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKKyAgICBpbnQgbmF0aXZlUmVzdWx0
ID0gaW1wbC0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKTsKICAgICBpZiAoaXNOdWxs
KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBqc051bWJlcihuYXRpdmVSZXN1bHQp
OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGFjNTAwYjVlNzZkZGI4OTBiNmNhZDYy
ZGUyYmRiMTdhM2JkMDYyNzMuLjQzZGIwYjA2YzViZDgxODM3NDIyODM0NGIzNDlkMWM5MTU5NGFh
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjI1LDkgKzIyNSw5IEBAIEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsCiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFRlc3RUeXBlZGVmcyogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RUeXBlZGVmcyo+
KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwtPmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CisgICAgaW50IG5hdGl2ZVJlc3Vs
dCA9IGltcGwtPmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5h
dGl2ZVJlc3VsdCk7CiB9CiAKIApAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvCiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIFRlc3RUeXBlZGVmcyogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RUeXBlZGVmcyo+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIGltcGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CisgICAg
Y29uc3QgU3RyaW5nJiBuYXRpdmVSZXN1bHQgPSBpbXBsLT5zdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBuYXRpdmVSZXN1bHQp
OwogfQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194619</attachid>
            <date>2013-03-22 12:37:46 -0700</date>
            <delta_ts>2013-03-23 16:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112711-20130322193333.patch</filename>
            <type>text/plain</type>
            <size>17033</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhlNmU5ZmQxZmEzNGQy
NjdkNWI2MWFmOGE1YjIzMjJmODZiNTc3YS4uMzJiMWU5NDA2YzQ5ZTI5YTJmMTVmZTViMzAzYzhk
OTA5ZTFmY2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTIyICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSlNDXSBEb24ndCBj
cmVhdGUgYSBKU1ZhbHVlIGlmIGl0J3Mgbm90IGdvaW5nIHRvIGJlIHVzZWQgZm9yIG51bGxhYmxl
IGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjcxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gbnVsbGFibGUgYXR0cmlidXRlcyBhcmUgdXNlZCwgaXQncyBwb3NzaWJsZSB0aGF0
IHdlIGRpc3JlZ2FyZCB0aGUgSlNWYWx1ZQorICAgICAgICB3aGVuIG51bGwgc2hvdWxkIGJlIHJl
dHVybmVkIGluc3RlYWQuIFRoaXMgaXMgYSB3YXN0ZSwgYW5kIHdlIHNob3VsZCBjYXN0IHRoZQor
ICAgICAgICBuYXRpdmUgdHlwZSB0byBhIEpTVmFsdWUgYXMgbGF0ZSBhcyBwb3NzaWJsZS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChOYXRpdmVWYWx1ZVRvTG9jYWwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKwogMjAxMy0wMy0yMiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiAtd2Via2l0LWJv
eC1yZWZsZWN0IGRvZXMgbm90IHNob3cgb24gdmlkZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggY2QxZDcw
MDUyNDc4Y2JlNWUzNWRkMjFmOWI1ZTQzMjYzYjVhNDJkMS4uM2E0ZGNlODRhMmFjMGZjZTBjZWIz
NmEzN2YzNDYyNGI0ZDU3NTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE4MjMsNiArMTgyMyw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAgICAgbXkgJGlzTnVsbGFibGUgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGU7CisgICAgICAgICAgICAgICAgbXkgJGlzQ2Fj
aGVkQXR0cmlidXRlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FjaGVkQXR0cmlidXRlIn07CiAgICAgICAgICAgICAgICAgJGNvZGVHZW5lcmF0b3ItPkFz
c2VydE5vdFNlcXVlbmNlVHlwZSgkdHlwZSk7CiAgICAgICAgICAgICAgICAgbXkgJGdldEZ1bmN0
aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJG5hbWUpOwpAQCAtMTgzOSw3ICsxODQw
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgeworICAgICAgICAgICAg
ICAgIGlmICgkaXNDYWNoZWRBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgICAgICAgJG5lZWRz
TWFya0NoaWxkcmVuID0gMTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4ODgsNyArMTg4OSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7XG4iKSBpZiAkaXNOdWxsYWJs
ZTsKIAogICAgICAgICAgICAgICAgICAgICBteSAkY2FjaGVJbmRleCA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWNoZWRBdHRyaWJ1dGUifSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGlzQ2FjaGVk
QXR0cmlidXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVJbmRleCA9ICRjdXJy
ZW50Q2FjaGVkQXR0cmlidXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRDYWNo
ZWRBdHRyaWJ1dGUrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5nZXQoKSlcbiIpOwpAQCAtMTg5Niw2ICsxODk3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNhbGxXaXRoKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxA
aW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CisgICAgICAgICAgICAgICAgICAgIG15ICRy
ZXR1cm5WYWx1ZSA9ICJyZXN1bHQiOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnTGlz
dFByb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiY2FzdGVkVGhpcy0+aW1wbCgpLT4kaW1w
bEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIs
ICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CkBAIC0xOTIzLDIzICsxOTI1LDMwIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFy
Z3VtZW50cywgQGNhbGxXaXRoQXJncyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRq
c1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJm
YWNlTmFtZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIp
IiwgImNhc3RlZFRoaXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5h
bWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVk
VHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJGlzTnVsbGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkbmF0
aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlIG5hdGl2ZVJlc3VsdCA9ICIg
LiBOYXRpdmVWYWx1ZVRvTG9jYWwoIiRmdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKSIsICRuYXRpdmVUeXBlKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaXNOdWxsKVxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBq
c051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNDYWNoZWRB
dHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJuYXRpdmVSZXN1bHQiLCAiY2FzdGVk
VGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5WYWx1ZSA9IE5hdGl2ZVRvSlNW
YWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAibmF0aXZlUmVz
dWx0IiwgImNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW50ZXJmYWNlTmFtZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRz
KSAuICIpIiwgImNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+
IG9iaiA9ICRqc1R5cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBlO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgY2FzdGVkVGhpcy0+bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpO1xuIikgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhY2hlZEF0dHJpYnV0ZSJ9
KTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJl
c3VsdDtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
YXN0ZWRUaGlzLT5tXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7XG4iKSBpZiAkaXNDYWNoZWRBdHRy
aWJ1dGU7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biAkcmV0dXJuVmFsdWU7XG4iKTsKIAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoImVjIik7CkBAIC0xOTUxLDEzICsxOTYwLDE0
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwg
XEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKSk7CisgICAgICAgICAgICAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4g
TmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUs
ICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMp
IC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJG5hdGl2ZVR5cGUgbmF0aXZlUmVzdWx0ID0gIiAuIE5h
dGl2ZVZhbHVlVG9Mb2NhbCgiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigi
LCAiLCBAYXJndW1lbnRzKSAuICIpIiwgJG5hdGl2ZVR5cGUpIC4gIjtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW50ZXJmYWNl
TmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBs
LT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIp
IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRuYXRpdmVUeXBlIG5hdGl2ZVJlc3VsdCA9ICIgLiBOYXRpdmVW
YWx1ZVRvTG9jYWwoImltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIs
IEBhcmd1bWVudHMpIC4gIikiLCAkbmF0aXZlVHlwZSkgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKQEAgLTE5
NjYsNyArMTk3Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgIm5hdGl2ZVJlc3VsdCIsICJj
YXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMzE5NSw2ICszMjA1LDE1IEBAIHN1
YiBJc05hdGl2ZVR5cGUKICAgICByZXR1cm4gZXhpc3RzICRuYXRpdmVUeXBleyR0eXBlfTsKIH0K
IAorc3ViIE5hdGl2ZVZhbHVlVG9Mb2NhbAoreworICAgIG15ICR2YWx1ZSA9IHNoaWZ0OworICAg
IG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gIldURjo6Z2V0UHRyKCR2YWx1ZSkiIGlm
ICR0eXBlID1+IC9cKiQvOworICAgIHJldHVybiAkdmFsdWU7Cit9CisKIHN1YiBKU1ZhbHVlVG9O
YXRpdmUKIHsKICAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGEwMzM5
N2UyYmZjYzQxMmVlN2JhYjA3ZjI4YzI0M2RjZTk1ZTBmY2IuLmMwZmU5ODVmZTk1NWU4MjM0MjBk
YTc0ZTkzOTliNzFmYjY3MzE1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC02NTcsOSArNjU3LDkgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3AKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CisgICAgaW50IG5hdGl2ZVJlc3VsdCA9IGltcGwtPmF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3VsdCk7
CiB9CiAKIApAQCAtNjc4LDkgKzY3OCw5IEBAIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlCiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5zdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihlYykpOworICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlUmVzdWx0ID0gaW1w
bC0+c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgbmF0aXZlUmVzdWx0KTsKIH0KIAogCkBAIC03MjcsOSArNzI3LDkgQEAgSlNW
YWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXMKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhleGVjLCBlYykpKTsKKyAgICBUZXN0T2JqKiBuYXRpdmVSZXN1bHQgPSBXVEY6
OmdldFB0cihpbXBsLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgZWMpKTsK
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KG5hdGl2ZVJlc3VsdCkpOwogfQogCiAKQEAgLTc0MSw5ICs3NDEsOSBAQCBKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBlYykpKTsKKyAgICBU
ZXN0T2JqKiBuYXRpdmVSZXN1bHQgPSBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBlYykpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdG9K
UyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIobmF0aXZlUmVz
dWx0KSk7CiB9CiAKIApAQCAtNzY3LDkgKzc2Nyw5IEBAIEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgc2NyaXB0Q29udGV4dCwgZWMp
KSk7CisgICAgVGVzdE9iaiogbmF0aXZlUmVzdWx0ID0gV1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhleGVjLCBz
Y3JpcHRDb250ZXh0LCBlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIobmF0aXZlUmVzdWx0KSk7CiB9CiAKIApAQCAtOTg3LDEwICs5
ODcsMTAgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3AKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLT5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShpc051bGwpKTsKKyAgICBkb3Vi
bGUgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoaXNOdWxsKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAogCkBAIC0xMDAw
LDEwICsxMDAwLDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVyCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC0+bnVsbGFibGVMb25nQXR0cmlidXRlKGlzTnVsbCkpOworICAg
IGludCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKTsK
ICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAogCkBAIC0xMDEz
LDEwICsxMDEzLDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGltcGwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpKTsK
KyAgICBib29sIG5hdGl2ZVJlc3VsdCA9IGltcGwtPm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBqc0Jvb2xlYW4obmF0aXZlUmVzdWx0KTsKIH0KIAog
CkBAIC0xMDI2LDEwICsxMDI2LDEwIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wCiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+bnVsbGFibGVTdHJp
bmdBdHRyaWJ1dGUoaXNOdWxsKSk7CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVSZXN1bHQgPSBp
bXBsLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpOwogICAgIGlmIChpc051bGwpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBuYXRpdmVSZXN1bHQpOwogfQogCiAKQEAgLTEwMzksMTAg
KzEwMzksMTAgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051bGwpKTsK
KyAgICBpbnQgbmF0aXZlUmVzdWx0ID0gaW1wbC0+bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGUoaXNOdWxsKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0K
IAogCkBAIC0xMDUyLDExICsxMDUyLDExIEBAIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJp
bmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0
T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0g
ICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwtPm51bGxhYmxlU3RyaW5nVmFs
dWUoaXNOdWxsLCBlYykpOworICAgIGludCBuYXRpdmVSZXN1bHQgPSBpbXBsLT5udWxsYWJsZVN0
cmluZ1ZhbHVlKGlzTnVsbCwgZWMpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBq
c051bGwoKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGpzTnVtYmVyKG5hdGl2ZVJlc3VsdCk7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKaW5kZXggYTAyMWIyODJkOWFjYmNlMjEyYzU3ZWE1ODE2NmVhYjZkNzU0ZDRjNi4u
ZGQyODcxYTAzMzZiNjQyM2I4MGJjYmZiYjc1OGYxYjM1ODBmN2JjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRl
ZnMuY3BwCkBAIC0yMjUsOSArMjI1LDkgQEAgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdFR5cGVk
ZWZzKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdFR5cGVkZWZzKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC0+YXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBpbnQgbmF0aXZlUmVzdWx0ID0gaW1wbC0+YXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ganNOdW1iZXIobmF0aXZlUmVzdWx0KTsKIH0KIAog
CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG8KICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdFR5cGVkZWZzKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdFR5cGVkZWZzKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2
ZVJlc3VsdCA9IGltcGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG5hdGl2ZVJlc3VsdCk7CiB9CiAKIAo=
</data>
<flag name="review"
          id="216400"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>