<?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>93889</bug_id>
          
          <creation_ts>2012-08-13 13:23:48 -0700</creation_ts>
          <short_desc>[Qt] Port convertQVariantToValue to use the JSC C API</short_desc>
          <delta_ts>2012-08-22 05:26:06 -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>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>
          
          <blocked>60842</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>cmarcelo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694013</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-13 13:23:48 -0700</bug_when>
    <thetext>[Qt] Port convertQVariantToValue to use the JSC C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700718</commentid>
    <comment_count>1</comment_count>
      <attachid>159682</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-21 07:01:13 -0700</bug_when>
    <thetext>Created attachment 159682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700726</commentid>
    <comment_count>2</comment_count>
      <attachid>159682</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-08-21 07:17:09 -0700</bug_when>
    <thetext>Comment on attachment 159682
Patch

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

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:838
&gt; +        // ### FIXME: Need private JSC C API.

If possible, create a bug for this and reference it here.

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:884
&gt; +            if (exception &amp;&amp; *exception)
&gt; +                break;
&gt; +            if (propertyValue)
&gt; +                JSObjectSetProperty(context, ret, propertyName, propertyValue, kJSPropertyAttributeNone, exception);
&gt; +            if (exception &amp;&amp; *exception)
&gt; +                break;

Do we want to stop when there&apos;s an error converting something, or just skip it to be consistent with the other &quot;container&quot; types?

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:894
&gt; +        // ### Could use special array class that lazily converts.

Use &quot;TODO&quot; :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700752</commentid>
    <comment_count>3</comment_count>
      <attachid>159682</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-21 07:49:03 -0700</bug_when>
    <thetext>Comment on attachment 159682
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        * bridge/qt/qt_instance.cpp:
&gt; +        (Bindings):
&gt; +        (JSC::Bindings::QtField::valueFromInstance):
&gt; +        * bridge/qt/qt_runtime.cpp:
&gt; +        (JSC::Bindings::convertQVariantToValue):
&gt; +        (JSC::Bindings::QtRuntimeMethod::call):
&gt; +        (JSC::Bindings::QtConnectionObject::execute):
&gt; +        (JSC::Bindings::::valueAt):
&gt; +        * bridge/qt/qt_runtime.h:
&gt; +        (Bindings):

a bit more info could be added. Like now you actually throw errors

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:894
&gt;&gt; +        // ### Could use special array class that lazily converts.
&gt; 
&gt; Use &quot;TODO&quot; :-)

I think we are actually supposed to use FIXME: still a fixme or todo is better with a bug link :-)

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:928
&gt;      } else if (type == (QMetaType::Type)qMetaTypeId&lt;QList&lt;int&gt; &gt;()) {

why no space before qMeta here you have that higher up in the code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701747</commentid>
    <comment_count>4</comment_count>
      <attachid>159682</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 03:51:39 -0700</bug_when>
    <thetext>Comment on attachment 159682
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        (Bindings):
&gt; 
&gt; a bit more info could be added. Like now you actually throw errors

The error handling is actually just an artifact of the JSC C API, behaviourally nothing changed (because in the internal API the exceptions are not handled using a separate variable but they &quot;remain&quot; in ExecState). But I&apos;ll write a few more words :)

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:838
&gt;&gt; +        // ### FIXME: Need private JSC C API.
&gt; 
&gt; If possible, create a bug for this and reference it here.

On second thought, I think I should remove the comment. The DOM binding for this type doesn&apos;t belong into the (pure) JSC C API and the use of internal API is okay here. When moving this code out WebCore at some point I&apos;ll see if we can handle the bytearray conversion using the custom type code. Along with the pixmap runtime there&apos;ll always be a little bit of code left that uses the JSC internals, but we can keep that code minimal and separate from the rest.

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:884
&gt;&gt; +                break;
&gt; 
&gt; Do we want to stop when there&apos;s an error converting something, or just skip it to be consistent with the other &quot;container&quot; types?

Hm, right. Ok, I&apos;ll change it back for consistency and pass null in fact. (we don&apos;t want to &quot;pollute&quot; the exception parameter of the overall function then)

&gt;&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:894
&gt;&gt;&gt; +        // ### Could use special array class that lazily converts.
&gt;&gt; 
&gt;&gt; Use &quot;TODO&quot; :-)
&gt; 
&gt; I think we are actually supposed to use FIXME: still a fixme or todo is better with a bug link :-)

Alright, I&apos;ll file a bug and use TODO.

&gt;&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:928
&gt;&gt;      } else if (type == (QMetaType::Type)qMetaTypeId&lt;QList&lt;int&gt; &gt;()) {
&gt; 
&gt; why no space before qMeta here you have that higher up in the code

Hm, good point, that&apos;s inconsistent, although I think higher up in the code there should not be a space. I&apos;ll make it more consistent :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701770</commentid>
    <comment_count>5</comment_count>
      <attachid>159902</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 04:41:02 -0700</bug_when>
    <thetext>Created attachment 159902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701778</commentid>
    <comment_count>6</comment_count>
      <attachid>159902</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-22 05:12:28 -0700</bug_when>
    <thetext>Comment on attachment 159902
Patch

I still think the changelog could use a few words</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701790</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 05:21:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 159902 [details])
&gt; I still think the changelog could use a few words

Oops, I forgot that in the uploaded patch. Will elaborate when landing. Sorry :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701793</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-22 05:26:06 -0700</bug_when>
    <thetext>Committed r126290: &lt;http://trac.webkit.org/changeset/126290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159682</attachid>
            <date>2012-08-21 07:01:13 -0700</date>
            <delta_ts>2012-08-22 04:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93889-20120821160238.patch</filename>
            <type>text/plain</type>
            <size>15207</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFhNTc1ZmE1OGUzOWM3
NmZjZjNmOTY1Y2ZhMmYwZTM3ZDY5ZWM0NC4uNTNlNjFlOGNiMDMzMTc5MGI5ZWQ4MjE4YjQ5OTBm
Y2Y1YjAxMWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA4LTIxICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFBv
cnQgY29udmVydFFWYXJpYW50VG9WYWx1ZSB0byB1c2UgdGhlIEpTQyBDIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4ODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaCBieSBO
b2FtIFJvc2VudGhhbC4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdEZpZWxkOjp2YWx1
ZUZyb21JbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmNhbGwpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ojo6dmFsdWVBdCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAg
ICAgKEJpbmRpbmdzKToKKwogMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0
L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCBkMzZjZjFjZGJiYWEyZjNj
ZjZhMGJmZTEzZDlhNGY0MmEyNWE2NjRkLi5iOWEzNGFjMzBiN2ZjM2Q3NTQzNmMxYjM4OTMyMTY0
MDE4Mjc4ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAg
LTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5j
ZS5oIgogCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCkBAIC0zNjAs
NyArMzYxLDYgQEAgSlNWYWx1ZSBRdEluc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIH0KIAogLy8gSW4gcXRfcnVudGltZS5jcHAKLUpTVmFsdWUgY29udmVydFFWYXJpYW50
VG9WYWx1ZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIGNvbnN0IFFW
YXJpYW50JiB2YXJpYW50KTsKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlIGhpbnQsIGludCAqZGlzdGFuY2UpOwogCiBR
Qnl0ZUFycmF5IFF0RmllbGQ6Om5hbWUoKSBjb25zdApAQCAtMzk0LDcgKzM5NCwxMSBAQCBKU1Zh
bHVlIFF0RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5z
dGFuY2UqIGluc3QpIGNvbnN0CiAgICAgICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBEeW5hbWljUHJv
cGVydHkpCiAgICAgICAgICAgICB2YWwgPSBvYmotPnByb3BlcnR5KG1fZHluYW1pY1Byb3BlcnR5
KTsKICNlbmRpZgotICAgICAgICByZXR1cm4gY29udmVydFFWYXJpYW50VG9WYWx1ZShleGVjLCBp
bnN0LT5yb290T2JqZWN0KCksIHZhbCk7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
MDsKKyAgICAgICAgSlNWYWx1ZVJlZiBqc1ZhbHVlID0gY29udmVydFFWYXJpYW50VG9WYWx1ZSh0
b1JlZihleGVjKSwgaW5zdC0+cm9vdE9iamVjdCgpLCB2YWwsICZleGNlcHRpb24pOworICAgICAg
ICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgdG9K
UyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywganNWYWx1ZSk7
CiAgICAgfQogICAgIFFTdHJpbmcgbXNnID0gUVN0cmluZyhRTGF0aW4xU3RyaW5nKCJjYW5ub3Qg
YWNjZXNzIG1lbWJlciBgJTEnIG9mIGRlbGV0ZWQgUU9iamVjdCIpKS5hcmcoUUxhdGluMVN0cmlu
ZyhuYW1lKCkpKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCBtc2cudG9MYXRpbjEoKS5jb25zdERhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwCmluZGV4IDQ1OTJkZmI2ZTNhY2ZiNjcwMmEwZWQ5MmRjNTNiNTdkOTFiNDM5
ZjAuLmUzNzRiZWRmMDY1YWFkZGQxODAyNDRkMmNhMmJiMjlmMTI4ZmE5N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTc3NSw3ICs3NzUsNyBAQCBRVmFyaWFu
dCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
UU1ldGFUeXBlOjpUeXBlCiAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoZXhlYywg
dmFsdWUsIGhpbnQsIGRpc3RhbmNlLCAmdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lvbkxpbWl0KTsK
IH0KIAotSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUGFz
c1JlZlB0cjxSb290T2JqZWN0PiByb290LCBjb25zdCBRVmFyaWFudCYgdmFyaWFudCkKK0pTVmFs
dWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1Jl
ZlB0cjxSb290T2JqZWN0PiByb290LCBjb25zdCBRVmFyaWFudCYgdmFyaWFudCwgSlNWYWx1ZVJl
ZiAqZXhjZXB0aW9uKQogewogICAgIC8vIFZhcmlhbnRzIHdpdGggUU9iamVjdCAqIGNhbiBiZSBp
c051bGwgYnV0IG5vdCBhIG51bGwgcG9pbnRlcgogICAgIC8vIEFuIGVtcHR5IFFTdHJpbmcgdmFy
aWFudCBpcyBhbHNvIG51bGwKQEAgLTc4NiwxMyArNzg2LDExIEBAIEpTVmFsdWUgY29udmVydFFW
YXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9v
dCwgY29uCiAgICAgICAgICFRTWV0YVR5cGU6OnR5cGVGbGFncyh0eXBlKS50ZXN0RmxhZyhRTWV0
YVR5cGU6OlBvaW50ZXJUb1FPYmplY3QpICYmCiAgICAgICAgIHR5cGUgIT0gUU1ldGFUeXBlOjpW
b2lkU3RhciAmJgogICAgICAgICB0eXBlICE9IFFNZXRhVHlwZTo6UVN0cmluZykgewotICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4
dCk7CiAgICAgfQogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0KICAgICBpZiAodHlw
ZSA9PSBRTWV0YVR5cGU6OkJvb2wpCi0gICAgICAgIHJldHVybiBqc0Jvb2xlYW4odmFyaWFudC50
b0Jvb2woKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdmFy
aWFudC50b0Jvb2woKSk7CiAKICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OkludCB8fAogICAg
ICAgICB0eXBlID09IFFNZXRhVHlwZTo6VUludCB8fApAQCAtODA0LDcgKzgwMiw3IEBAIEpTVmFs
dWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9v
dE9iamVjdD4gcm9vdCwgY29uCiAgICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpVU2hvcnQgfHwK
ICAgICAgICAgdHlwZSA9PSBRTWV0YVR5cGU6OkZsb2F0IHx8CiAgICAgICAgIHR5cGUgPT0gUU1l
dGFUeXBlOjpEb3VibGUpCi0gICAgICAgIHJldHVybiBqc051bWJlcih2YXJpYW50LnRvRG91Ymxl
KCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdmFyaWFudC50
b0RvdWJsZSgpKTsKIAogICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UURhdGVUaW1lIHx8CiAg
ICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpRRGF0ZSB8fApAQCAtODI0LDU5ICs4MjIsNjcgQEAg
SlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0
cjxSb290T2JqZWN0PiByb290LCBjb24KICAgICAgICAgfQogCiAgICAgICAgIC8vIERhdGVzIHNw
ZWNpZmllZCB0aGlzIHdheSBhcmUgaW4gbG9jYWwgdGltZSAod2UgY29udmVydCBEYXRlVGltZXMg
YWJvdmUpCi0gICAgICAgIEdyZWdvcmlhbkRhdGVUaW1lIGR0OwotICAgICAgICBkdC5zZXRZZWFy
KGRhdGUueWVhcigpKTsKLSAgICAgICAgZHQuc2V0TW9udGgoZGF0ZS5tb250aCgpIC0gMSk7Ci0g
ICAgICAgIGR0LnNldE1vbnRoRGF5KGRhdGUuZGF5KCkpOwotICAgICAgICBkdC5zZXRIb3VyKHRp
bWUuaG91cigpKTsKLSAgICAgICAgZHQuc2V0TWludXRlKHRpbWUubWludXRlKCkpOwotICAgICAg
ICBkdC5zZXRTZWNvbmQodGltZS5zZWNvbmQoKSk7Ci0gICAgICAgIGR0LnNldElzRFNUKC0xKTsK
LSAgICAgICAgZG91YmxlIG1zID0gZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGR0LCB0aW1l
Lm1zZWMoKSwgLyppbnB1dElzVVRDKi8gZmFsc2UpOwotCi0gICAgICAgIHJldHVybiBEYXRlSW5z
dGFuY2U6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1
Y3R1cmUoKSwgdHJ1bmMobXMpKTsKKyAgICAgICAgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSA9IHsKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGRhdGUueWVhcigp
KSwKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGRhdGUubW9udGgoKSAt
IDEpLAorICAgICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgZGF0ZS5kYXkoKSks
CisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0aW1lLmhvdXIoKSksCisg
ICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0aW1lLm1pbnV0ZSgpKSwKKyAg
ICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRpbWUuc2Vjb25kKCkpLAorICAg
ICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdGltZS5tc2VjKCkpCisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBKU09iamVjdE1ha2VEYXRlKGNvbnRleHQsIDcsIGFyZ3VtZW50
cywgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFCeXRl
QXJyYXkpIHsKKyAgICAgICAgLy8gIyMjIEZJWE1FOiBOZWVkIHByaXZhdGUgSlNDIEMgQVBJLgog
ICAgICAgICBRQnl0ZUFycmF5IHF0Qnl0ZUFycmF5ID0gdmFyaWFudC52YWx1ZTxRQnl0ZUFycmF5
PigpOwogICAgICAgICBXVEY6OlJlZlB0cjxXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5PiB3dGZCeXRl
QXJyYXkgPSBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHF0Qnl0
ZUFycmF5Lmxlbmd0aCgpKTsKICAgICAgICAgbWVtY3B5KHd0ZkJ5dGVBcnJheS0+ZGF0YSgpLCBx
dEJ5dGVBcnJheS5jb25zdERhdGEoKSwgcXRCeXRlQXJyYXkubGVuZ3RoKCkpOwotICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIHd0ZkJ5dGVBcnJheS5nZXQoKSk7CisgICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCB0
b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSwgd3RmQnl0ZUFycmF5LmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKFFN
ZXRhVHlwZTo6dHlwZUZsYWdzKHR5cGUpLnRlc3RGbGFnKFFNZXRhVHlwZTo6UG9pbnRlclRvUU9i
amVjdCkpIHsKICAgICAgICAgUU9iamVjdCogb2JqID0gdmFyaWFudC52YWx1ZTxRT2JqZWN0Kj4o
KTsKICAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAg
ICAgIHJldHVybiBRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKG9iaiwgcm9vdCwgUXRJbnN0YW5j
ZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFF0SW5zdGFuY2U6
OmdldFF0SW5zdGFuY2Uob2JqLCByb290LCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCktPmNyZWF0
ZVJ1bnRpbWVPYmplY3QoZXhlYykpOwogICAgIH0KIAotICAgIGlmIChRdFBpeG1hcEluc3RhbmNl
OjpjYW5IYW5kbGUoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPih2YXJpYW50LnR5cGUoKSkp
KQotICAgICAgICByZXR1cm4gUXRQaXhtYXBJbnN0YW5jZTo6Y3JlYXRlUGl4bWFwUnVudGltZU9i
amVjdChleGVjLCByb290LCB2YXJpYW50KTsKKyAgICBpZiAoUXRQaXhtYXBJbnN0YW5jZTo6Y2Fu
SGFuZGxlKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4odmFyaWFudC50eXBlKCkpKSkgewor
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgICAgICByZXR1cm4g
dG9SZWYoZXhlYywgUXRQaXhtYXBJbnN0YW5jZTo6Y3JlYXRlUGl4bWFwUnVudGltZU9iamVjdChl
eGVjLCByb290LCB2YXJpYW50KSk7CisgICAgfQogCiAgICAgaWYgKGN1c3RvbVJ1bnRpbWVDb252
ZXJzaW9ucygpLT5jb250YWlucyh0eXBlKSkgewogICAgICAgICBpZiAoIXJvb3QtPmdsb2JhbE9i
amVjdCgpLT5pbmhlcml0cygmSlNET01XaW5kb3c6OnNfaW5mbykpCi0gICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIAogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAoc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3cqPihyb290LT5nbG9iYWxPYmplY3QoKSkpLT5pbXBsKCktPmRvY3VtZW50KCk7
CiAgICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICAgICAgcmV0dXJuIGN1c3RvbVJ1bnRpbWVDb252ZXJzaW9ucygpLT52YWx1ZSh0eXBl
KS50b0pTVmFsdWVGdW5jKGV4ZWMsIHRvSlNET01HbG9iYWxPYmplY3QoZG9jdW1lbnQsIGV4ZWMp
LCB2YXJpYW50KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICAgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIGN1c3RvbVJ1bnRpbWVDb252ZXJzaW9ucygpLT52YWx1ZSh0eXBl
KS50b0pTVmFsdWVGdW5jKGV4ZWMsIHRvSlNET01HbG9iYWxPYmplY3QoZG9jdW1lbnQsIGV4ZWMp
LCB2YXJpYW50KSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRVmFyaWFu
dE1hcCkgewogICAgICAgICAvLyBjcmVhdGUgYSBuZXcgb2JqZWN0LCBhbmQgc3R1ZmYgcHJvcGVy
dGllcyBpbnRvIGl0Ci0gICAgICAgIEpTT2JqZWN0KiByZXQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKKyAgICAgICAgSlNPYmplY3RSZWYgcmV0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQs
IDAsIDApOwogICAgICAgICBRVmFyaWFudE1hcCBtYXAgPSB2YXJpYW50LnZhbHVlPFFWYXJpYW50
TWFwPigpOwogICAgICAgICBRVmFyaWFudE1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG1hcC5jb25z
dEJlZ2luKCk7CiAgICAgICAgIHdoaWxlIChpICE9IG1hcC5jb25zdEVuZCgpKSB7CiAgICAgICAg
ICAgICBRU3RyaW5nIHMgPSBpLmtleSgpOwotICAgICAgICAgICAgSlNWYWx1ZSB2YWwgPSBjb252
ZXJ0UVZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHJvb3QuZ2V0KCksIGkudmFsdWUoKSk7Ci0gICAgICAg
ICAgICBpZiAodmFsKSB7Ci0gICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0g
ICAgICAgICAgICAgICAgcmV0LT5tZXRob2RUYWJsZSgpLT5wdXQocmV0LCBleGVjLCBJZGVudGlm
aWVyKCZleGVjLT5nbG9iYWxEYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFVDaGFy
ICo+KHMuY29uc3REYXRhKCkpLCBzLmxlbmd0aCgpKSwgdmFsLCBzbG90KTsKLSAgICAgICAgICAg
ICAgICAvLyAjIyMgZXJyb3IgY2FzZT8KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihzLmNvbnN0RGF0YSgpKSwgcy5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVmIHByb3BlcnR5VmFsdWUgPSBjb252ZXJ0UVZhcmlhbnRUb1Zh
bHVlKGNvbnRleHQsIHJvb3QuZ2V0KCksIGkudmFsdWUoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlKQorICAgICAgICAgICAgICAgIEpTT2JqZWN0
U2V0UHJvcGVydHkoY29udGV4dCwgcmV0LCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUsIGtK
U1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNl
cHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVsZWFzZShwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgKytpOwogICAgICAg
ICB9CiAKQEAgLTg4NSwzMSArODkxLDYxIEBAIEpTVmFsdWUgY29udmVydFFWYXJpYW50VG9WYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgY29uCiAKICAg
ICAvLyBMaXN0IHR5cGVzCiAgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRVmFyaWFudExpc3Qp
IHsKKyAgICAgICAgLy8gIyMjIENvdWxkIHVzZSBzcGVjaWFsIGFycmF5IGNsYXNzIHRoYXQgbGF6
aWx5IGNvbnZlcnRzLgogICAgICAgICBRVmFyaWFudExpc3QgdmwgPSB2YXJpYW50LnRvTGlzdCgp
OwotICAgICAgICBxQ29udkRlYnVnKCkgPDwgImdvdCBhICIgPDwgdmwuY291bnQoKSA8PCAiIGxl
bmd0aCBsaXN0OiIgPDwgdmw7Ci0gICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShl
eGVjLCBuZXcgUXRBcnJheTxRVmFyaWFudD4odmwsIFFNZXRhVHlwZTo6Vm9pZCwgcm9vdCkpOwor
ICAgICAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAs
IDAsIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAg
ICAgICAgICAgIHJldHVybiBhcnJheTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2bC5j
b3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcHJvcGVydHkgPSBjb252ZXJ0
UVZhcmlhbnRUb1ZhbHVlKGNvbnRleHQsIHJvb3QuZ2V0KCksIHZsLmF0KGkpLCBleGNlcHRpb24p
OworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHByb3BlcnR5KQorICAgICAgICAgICAgICAgIEpT
T2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBwcm9wZXJ0eSwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAg
fSBlbHNlIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UVN0cmluZ0xpc3QpIHsKICAgICAgICAgUVN0
cmluZ0xpc3Qgc2wgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmdMaXN0PigpOwotICAgICAgICByZXR1
cm4gUnVudGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8UVN0cmluZz4oc2wsIFFN
ZXRhVHlwZTo6UVN0cmluZywgcm9vdCkpOworICAgICAgICBKU09iamVjdFJlZiBhcnJheSA9IEpT
T2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIGV4Y2VwdGlvbik7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgc2wuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBRU3Ry
aW5nJiBzID0gc2wuYXQoaSk7CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBqc1N0cmluZyA9IEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIq
PihzLmNvbnN0RGF0YSgpKSwgcy5sZW5ndGgoKSk7CisgICAgICAgICAgICBKU09iamVjdFNldFBy
b3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4
dCwganNTdHJpbmcpLCBleGNlcHRpb24pOworICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGpz
U3RyaW5nKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgfSBlbHNlIGlm
ICh0eXBlID09IChRTWV0YVR5cGU6OlR5cGUpIHFNZXRhVHlwZUlkPFFPYmplY3RMaXN0PigpKSB7
Ci0gICAgICAgIFFPYmplY3RMaXN0IG9sPSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0PigpOwot
ICAgICAgICByZXR1cm4gUnVudGltZUFycmF5OjpjcmVhdGUoZXhlYywgbmV3IFF0QXJyYXk8UU9i
amVjdCo+KG9sLCBRTWV0YVR5cGU6OlFPYmplY3RTdGFyLCByb290KSk7CisgICAgICAgIFFPYmpl
Y3RMaXN0IG9sID0gdmFyaWFudC52YWx1ZTxRT2JqZWN0TGlzdD4oKTsKKyAgICAgICAgSlNPYmpl
Y3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCBleGNlcHRpb24p
OworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG9sLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZVJl
ZiBqc09iamVjdCA9IHRvUmVmKGV4ZWMsIFF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2Uob2wuYXQo
aSksIHJvb3QsIFF0SW5zdGFuY2U6OlF0T3duZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChl
eGVjKSk7CisgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBh
cnJheSwgaSwganNPYmplY3QsIGV4Y2VwdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGFycmF5OwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAoUU1ldGFUeXBlOjpUeXBlKXFNZXRhVHlw
ZUlkPFFMaXN0PGludD4gPigpKSB7Ci0gICAgICAgIFFMaXN0PGludD4gaWw9IHZhcmlhbnQudmFs
dWU8UUxpc3Q8aW50PiA+KCk7Ci0gICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShl
eGVjLCBuZXcgUXRBcnJheTxpbnQ+KGlsLCBRTWV0YVR5cGU6OkludCwgcm9vdCkpOworICAgICAg
ICBRTGlzdDxpbnQ+IGlsID0gdmFyaWFudC52YWx1ZTxRTGlzdDxpbnQ+ID4oKTsKKyAgICAgICAg
SlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCBleGNl
cHRpb24pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlsLmNvdW50KCk7ICsraSkKKyAg
ICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBK
U1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBpbC5hdChpKSksIGV4Y2VwdGlvbik7CisgICAgICAg
IHJldHVybiBhcnJheTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSAoUU1ldGFUeXBlOjpUeXBl
KXFNZXRhVHlwZUlkPFFWYXJpYW50PigpKSB7CiAgICAgICAgIFFWYXJpYW50IHJlYWwgPSB2YXJp
YW50LnZhbHVlPFFWYXJpYW50PigpOwogICAgICAgICBxQ29udkRlYnVnKCkgPDwgInJlYWwgdmFy
aWFudCBpczoiIDw8IHJlYWw7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVl
KGV4ZWMsIHJvb3QsIHJlYWwpOworICAgICAgICByZXR1cm4gY29udmVydFFWYXJpYW50VG9WYWx1
ZShjb250ZXh0LCByb290LmdldCgpLCByZWFsLCBleGNlcHRpb24pOwogICAgIH0KIAogICAgIHFD
b252RGVidWcoKSA8PCAiZmFsbGJhY2sgcGF0aCBmb3IiIDw8IHZhcmlhbnQgPDwgdmFyaWFudC51
c2VyVHlwZSgpOwogCiAgICAgUVN0cmluZyBzdHJpbmcgPSB2YXJpYW50LnRvU3RyaW5nKCk7Ci0g
ICAgVVN0cmluZyB1c3RyaW5nKChVQ2hhciopc3RyaW5nLnV0ZjE2KCksIHN0cmluZy5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOworICAgIEpTU3RyaW5nUmVm
IGpzc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0
PGNvbnN0IEpTQ2hhcio+KHN0cmluZy5jb25zdERhdGEoKSksIHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGpzc3RyaW5n
KTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoanNzdHJpbmcpOworICAgIHJldHVybiB2YWx1ZTsKIH0K
IAogLy8gVHlwZSBjb252ZXJzaW9uIG1ldGFkYXRhIChmcm9tIFF0U2NyaXB0IG9yaWdpbmFsbHkp
CkBAIC0xMzMzLDcgKzEzNjksNyBAQCBKU1ZhbHVlUmVmIFF0UnVudGltZU1ldGhvZDo6Y2FsbChK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTTwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBpZiAodmFyZ3Muc2l6
ZSgpID4gMCAmJiB2YXJnc1swXS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0b1JlZih0b0pT
KGNvbnRleHQpLCBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKHRvSlMoY29udGV4dCksIGQtPm1faW5z
dGFuY2UtPnJvb3RPYmplY3QoKSwgdmFyZ3NbMF0pKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRR
VmFyaWFudFRvVmFsdWUoY29udGV4dCwgZC0+bV9pbnN0YW5jZS0+cm9vdE9iamVjdCgpLCB2YXJn
c1swXSwgZXhjZXB0aW9uKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KQEAgLTE2NTAsNyArMTY4Niw3IEBAIHZvaWQgUXRDb25uZWN0aW9uT2JqZWN0Ojpl
eGVjdXRlKHZvaWQqKiBhcmd2KQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKysp
IHsKICAgICAgICAgaW50IGFyZ1R5cGUgPSBtZXRob2QucGFyYW1ldGVyVHlwZShpKTsKLSAgICAg
ICAgYXJnc1tpXSA9IDo6dG9SZWYoZXhlYywgY29udmVydFFWYXJpYW50VG9WYWx1ZShleGVjLCBt
X3Jvb3RPYmplY3QsIFFWYXJpYW50KGFyZ1R5cGUsIGFyZ3ZbaSsxXSkpKTsKKyAgICAgICAgYXJn
c1tpXSA9IGNvbnZlcnRRVmFyaWFudFRvVmFsdWUodG9SZWYoZXhlYyksIG1fcm9vdE9iamVjdCwg
UVZhcmlhbnQoYXJnVHlwZSwgYXJndltpKzFdKSwgaWdub3JlZEV4Y2VwdGlvbik7CiAgICAgfQog
CiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihtX2NvbnRleHQsIG1fcmVjZWl2ZXJGdW5jdGlv
biwgbV9yZWNlaXZlciwgYXJnYywgYXJncy5kYXRhKCksIDApOwpAQCAtMTcwMiw3ICsxNzM4LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEpTVmFsdWUgUXRBcnJheTxUPjo6dmFsdWVBdChFeGVj
U3RhdGUgKmV4ZWMsIHVuc2lnbmVkIGludAogewogICAgIGlmIChpbmRleCA8IG1fbGVuZ3RoKSB7
CiAgICAgICAgIFQgdmFsID0gbV9saXN0LmF0KGluZGV4KTsKLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRRVmFyaWFudFRvVmFsdWUoZXhlYywgcm9vdE9iamVjdCgpLCBRVmFyaWFudDo6ZnJvbVZhbHVl
KHZhbCkpOworICAgICAgICByZXR1cm4gY29udmVydFFWYXJpYW50VG9WYWx1ZSh0b1JlZihleGVj
KSwgcm9vdE9iamVjdCgpLCBRVmFyaWFudDo6ZnJvbVZhbHVlKHZhbCkpOwogICAgIH0KIAogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgK
aW5kZXggMjQ1MGZjNTZlMzdlN2FmY2U3OWJhMzM2ZmVlYWFmNzE4ZDkwYmJhZi4uOTA4YWMyMzNk
MDRmNzliMDNlNjhkMDlkMjUzMmY3NWEzOWJkYjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgdHlwZWRlZiBKU1ZhbHVlICgqQ29udmVy
dFRvSlNWYWx1ZUZ1bmN0aW9uKShFeGVjU3RhdGUqIGV4ZWMsIFdlYkNvcmU6OkpTRE9NR2xvYmEK
IHZvaWQgcmVnaXN0ZXJDdXN0b21UeXBlKGludCBxdE1ldGFUeXBlSWQsIENvbnZlcnRUb1Zhcmlh
bnRGdW5jdGlvbiwgQ29udmVydFRvSlNWYWx1ZUZ1bmN0aW9uKTsKIAogUVZhcmlhbnQgY29udmVy
dFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlw
ZTo6VHlwZSBoaW50LCBpbnQgKmRpc3RhbmNlKTsKLUpTVmFsdWUgY29udmVydFFWYXJpYW50VG9W
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgY29uc3Qg
UVZhcmlhbnQmIHZhcmlhbnQpOworSlNWYWx1ZVJlZiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEpT
Q29udGV4dFJlZiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiwgY29uc3QgUVZhcmlhbnQmLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pOwogCiB2b2lkIHNldEV4Y2VwdGlvbihKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbiwgY29uc3QgUVN0cmluZyYgdGV4dCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159902</attachid>
            <date>2012-08-22 04:41:02 -0700</date>
            <delta_ts>2012-08-22 05:12:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93889-20120822134228.patch</filename>
            <type>text/plain</type>
            <size>15280</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFjNWM5NDc2MjEyNzhk
NjYyMjBjYmU4MWU5ZDBiOTljYTE0MmJhOC4uNjA1ZTI4YTkzYmJhMWE0MmVlYjgzZjU1ZGQ2OGYz
YWY2M2E1ODhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDEyLTA4LTIyICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAorICAgICAgICBbUXRdIFBv
cnQgY29udmVydFFWYXJpYW50VG9WYWx1ZSB0byB1c2UgdGhlIEpTQyBDIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4ODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaCBieSBO
b2FtIFJvc2VudGhhbC4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChCaW5kaW5ncyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdEZpZWxkOjp2YWx1
ZUZyb21JbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFFWYXJpYW50VG9WYWx1ZSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRob2Q6OmNhbGwpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ojo6dmFsdWVBdCk6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAg
ICAgKEJpbmRpbmdzKToKKworMjAxMi0wOC0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0
L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCA1MTNkNzExZGI1NjU5MTI4
ZDBkZjQ3YmE2MDQ2NjRkM2E4ZWQ0ODNlLi4wNDEyNTMyYTg1Y2Q2MjAzZWU0YTc5MzRmYTVmMDc4
YTYxMTZkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAg
LTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5j
ZS5oIgogCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCkBAIC0zMDMs
NyArMzA0LDYgQEAgSlNWYWx1ZSBRdEluc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIH0KIAogLy8gSW4gcXRfcnVudGltZS5jcHAKLUpTVmFsdWUgY29udmVydFFWYXJpYW50
VG9WYWx1ZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIGNvbnN0IFFW
YXJpYW50JiB2YXJpYW50KTsKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlIGhpbnQsIGludCAqZGlzdGFuY2UpOwogCiBR
Qnl0ZUFycmF5IFF0RmllbGQ6Om5hbWUoKSBjb25zdApAQCAtMzM3LDcgKzMzNywxMSBAQCBKU1Zh
bHVlIFF0RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5z
dGFuY2UqIGluc3QpIGNvbnN0CiAgICAgICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBEeW5hbWljUHJv
cGVydHkpCiAgICAgICAgICAgICB2YWwgPSBvYmotPnByb3BlcnR5KG1fZHluYW1pY1Byb3BlcnR5
KTsKICNlbmRpZgotICAgICAgICByZXR1cm4gY29udmVydFFWYXJpYW50VG9WYWx1ZShleGVjLCBp
bnN0LT5yb290T2JqZWN0KCksIHZhbCk7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
MDsKKyAgICAgICAgSlNWYWx1ZVJlZiBqc1ZhbHVlID0gY29udmVydFFWYXJpYW50VG9WYWx1ZSh0
b1JlZihleGVjKSwgaW5zdC0+cm9vdE9iamVjdCgpLCB2YWwsICZleGNlcHRpb24pOworICAgICAg
ICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgdG9K
UyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywganNWYWx1ZSk7
CiAgICAgfQogICAgIFFTdHJpbmcgbXNnID0gUVN0cmluZyhRTGF0aW4xU3RyaW5nKCJjYW5ub3Qg
YWNjZXNzIG1lbWJlciBgJTEnIG9mIGRlbGV0ZWQgUU9iamVjdCIpKS5hcmcoUUxhdGluMVN0cmlu
ZyhuYW1lKCkpKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCBtc2cudG9MYXRpbjEoKS5jb25zdERhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuY3BwCmluZGV4IDUxMjRlYzQxNTNhOTc4MzAyNDQxMWZiMTA5NGIxZDQ1MDI5NTdj
NGMuLjZhNDFlMmNjYWQ4NDNlNmRkZDRmZDExOTBjYzNkOWJmOWEyZThmYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKQEAgLTc3NSw3ICs3NzUsNyBAQCBRVmFyaWFu
dCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
UU1ldGFUeXBlOjpUeXBlCiAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoZXhlYywg
dmFsdWUsIGhpbnQsIGRpc3RhbmNlLCAmdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lvbkxpbWl0KTsK
IH0KIAotSlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUGFz
c1JlZlB0cjxSb290T2JqZWN0PiByb290LCBjb25zdCBRVmFyaWFudCYgdmFyaWFudCkKK0pTVmFs
dWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1Jl
ZlB0cjxSb290T2JqZWN0PiByb290LCBjb25zdCBRVmFyaWFudCYgdmFyaWFudCwgSlNWYWx1ZVJl
ZiAqZXhjZXB0aW9uKQogewogICAgIC8vIFZhcmlhbnRzIHdpdGggUU9iamVjdCAqIGNhbiBiZSBp
c051bGwgYnV0IG5vdCBhIG51bGwgcG9pbnRlcgogICAgIC8vIEFuIGVtcHR5IFFTdHJpbmcgdmFy
aWFudCBpcyBhbHNvIG51bGwKQEAgLTc4NiwxMyArNzg2LDExIEBAIEpTVmFsdWUgY29udmVydFFW
YXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9v
dCwgY29uCiAgICAgICAgICFRTWV0YVR5cGU6OnR5cGVGbGFncyh0eXBlKS50ZXN0RmxhZyhRTWV0
YVR5cGU6OlBvaW50ZXJUb1FPYmplY3QpICYmCiAgICAgICAgIHR5cGUgIT0gUU1ldGFUeXBlOjpW
b2lkU3RhciAmJgogICAgICAgICB0eXBlICE9IFFNZXRhVHlwZTo6UVN0cmluZykgewotICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4
dCk7CiAgICAgfQogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0KICAgICBpZiAodHlw
ZSA9PSBRTWV0YVR5cGU6OkJvb2wpCi0gICAgICAgIHJldHVybiBqc0Jvb2xlYW4odmFyaWFudC50
b0Jvb2woKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdmFy
aWFudC50b0Jvb2woKSk7CiAKICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OkludCB8fAogICAg
ICAgICB0eXBlID09IFFNZXRhVHlwZTo6VUludCB8fApAQCAtODA0LDcgKzgwMiw3IEBAIEpTVmFs
dWUgY29udmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9v
dE9iamVjdD4gcm9vdCwgY29uCiAgICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpVU2hvcnQgfHwK
ICAgICAgICAgdHlwZSA9PSBRTWV0YVR5cGU6OkZsb2F0IHx8CiAgICAgICAgIHR5cGUgPT0gUU1l
dGFUeXBlOjpEb3VibGUpCi0gICAgICAgIHJldHVybiBqc051bWJlcih2YXJpYW50LnRvRG91Ymxl
KCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdmFyaWFudC50
b0RvdWJsZSgpKTsKIAogICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6UURhdGVUaW1lIHx8CiAg
ICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpRRGF0ZSB8fApAQCAtODI0LDU5ICs4MjIsNjIgQEAg
SlNWYWx1ZSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0
cjxSb290T2JqZWN0PiByb290LCBjb24KICAgICAgICAgfQogCiAgICAgICAgIC8vIERhdGVzIHNw
ZWNpZmllZCB0aGlzIHdheSBhcmUgaW4gbG9jYWwgdGltZSAod2UgY29udmVydCBEYXRlVGltZXMg
YWJvdmUpCi0gICAgICAgIEdyZWdvcmlhbkRhdGVUaW1lIGR0OwotICAgICAgICBkdC5zZXRZZWFy
KGRhdGUueWVhcigpKTsKLSAgICAgICAgZHQuc2V0TW9udGgoZGF0ZS5tb250aCgpIC0gMSk7Ci0g
ICAgICAgIGR0LnNldE1vbnRoRGF5KGRhdGUuZGF5KCkpOwotICAgICAgICBkdC5zZXRIb3VyKHRp
bWUuaG91cigpKTsKLSAgICAgICAgZHQuc2V0TWludXRlKHRpbWUubWludXRlKCkpOwotICAgICAg
ICBkdC5zZXRTZWNvbmQodGltZS5zZWNvbmQoKSk7Ci0gICAgICAgIGR0LnNldElzRFNUKC0xKTsK
LSAgICAgICAgZG91YmxlIG1zID0gZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGR0LCB0aW1l
Lm1zZWMoKSwgLyppbnB1dElzVVRDKi8gZmFsc2UpOwotCi0gICAgICAgIHJldHVybiBEYXRlSW5z
dGFuY2U6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRhdGVTdHJ1
Y3R1cmUoKSwgdHJ1bmMobXMpKTsKKyAgICAgICAgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSA9IHsKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGRhdGUueWVhcigp
KSwKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGRhdGUubW9udGgoKSAt
IDEpLAorICAgICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgZGF0ZS5kYXkoKSks
CisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0aW1lLmhvdXIoKSksCisg
ICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0aW1lLm1pbnV0ZSgpKSwKKyAg
ICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRpbWUuc2Vjb25kKCkpLAorICAg
ICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdGltZS5tc2VjKCkpCisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBKU09iamVjdE1ha2VEYXRlKGNvbnRleHQsIDcsIGFyZ3VtZW50
cywgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFCeXRl
QXJyYXkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBxdEJ5dGVBcnJheSA9IHZhcmlhbnQudmFsdWU8
UUJ5dGVBcnJheT4oKTsKICAgICAgICAgV1RGOjpSZWZQdHI8V1RGOjpVaW50OENsYW1wZWRBcnJh
eT4gd3RmQnl0ZUFycmF5ID0gV1RGOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFs
aXplZChxdEJ5dGVBcnJheS5sZW5ndGgoKSk7CiAgICAgICAgIG1lbWNweSh3dGZCeXRlQXJyYXkt
PmRhdGEoKSwgcXRCeXRlQXJyYXkuY29uc3REYXRhKCksIHF0Qnl0ZUFycmF5Lmxlbmd0aCgpKTsK
LSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCB3dGZCeXRlQXJyYXkuZ2V0KCkpOworICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgICAgICByZXR1cm4gdG9S
ZWYoZXhlYywgdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSksIHd0ZkJ5dGVBcnJheS5nZXQoKSkpOwogICAgIH0KIAog
ICAgIGlmIChRTWV0YVR5cGU6OnR5cGVGbGFncyh0eXBlKS50ZXN0RmxhZyhRTWV0YVR5cGU6OlBv
aW50ZXJUb1FPYmplY3QpKSB7CiAgICAgICAgIFFPYmplY3QqIG9iaiA9IHZhcmlhbnQudmFsdWU8
UU9iamVjdCo+KCk7CiAgICAgICAgIGlmICghb2JqKQotICAgICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotICAgICAgICByZXR1cm4gUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShvYmosIHJvb3Qs
IFF0SW5zdGFuY2U6OlF0T3duZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7CisgICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBR
dEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKG9iaiwgcm9vdCwgUXRJbnN0YW5jZTo6UXRPd25lcnNo
aXApLT5jcmVhdGVSdW50aW1lT2JqZWN0KGV4ZWMpKTsKICAgICB9CiAKLSAgICBpZiAoUXRQaXht
YXBJbnN0YW5jZTo6Y2FuSGFuZGxlKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4odmFyaWFu
dC50eXBlKCkpKSkKLSAgICAgICAgcmV0dXJuIFF0UGl4bWFwSW5zdGFuY2U6OmNyZWF0ZVBpeG1h
cFJ1bnRpbWVPYmplY3QoZXhlYywgcm9vdCwgdmFyaWFudCk7CisgICAgaWYgKFF0UGl4bWFwSW5z
dGFuY2U6OmNhbkhhbmRsZShzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KHZhcmlhbnQudHlw
ZSgpKSkpIHsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFF0UGl4bWFwSW5zdGFuY2U6OmNyZWF0ZVBpeG1hcFJ1bnRp
bWVPYmplY3QoZXhlYywgcm9vdCwgdmFyaWFudCkpOworICAgIH0KIAogICAgIGlmIChjdXN0b21S
dW50aW1lQ29udmVyc2lvbnMoKS0+Y29udGFpbnModHlwZSkpIHsKICAgICAgICAgaWYgKCFyb290
LT5nbG9iYWxPYmplY3QoKS0+aW5oZXJpdHMoJkpTRE9NV2luZG93OjpzX2luZm8pKQotICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKHN0
YXRpY19jYXN0PEpTRE9NV2luZG93Kj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpKS0+aW1wbCgpLT5k
b2N1bWVudCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgICAgIHJldHVybiBjdXN0b21SdW50aW1lQ29udmVyc2lvbnMoKS0+
dmFsdWUodHlwZSkudG9KU1ZhbHVlRnVuYyhleGVjLCB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvY3Vt
ZW50LCBleGVjKSwgdmFyaWFudCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
CisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBjdXN0b21SdW50aW1lQ29udmVyc2lvbnMoKS0+
dmFsdWUodHlwZSkudG9KU1ZhbHVlRnVuYyhleGVjLCB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvY3Vt
ZW50LCBleGVjKSwgdmFyaWFudCkpOwogICAgIH0KIAogICAgIGlmICh0eXBlID09IFFNZXRhVHlw
ZTo6UVZhcmlhbnRNYXApIHsKICAgICAgICAgLy8gY3JlYXRlIGEgbmV3IG9iamVjdCwgYW5kIHN0
dWZmIHByb3BlcnRpZXMgaW50byBpdAotICAgICAgICBKU09iamVjdCogcmV0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0UmVmIHJldCA9IEpTT2JqZWN0TWFr
ZShjb250ZXh0LCAwLCAwKTsKICAgICAgICAgUVZhcmlhbnRNYXAgbWFwID0gdmFyaWFudC52YWx1
ZTxRVmFyaWFudE1hcD4oKTsKICAgICAgICAgUVZhcmlhbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGkg
PSBtYXAuY29uc3RCZWdpbigpOwogICAgICAgICB3aGlsZSAoaSAhPSBtYXAuY29uc3RFbmQoKSkg
ewogICAgICAgICAgICAgUVN0cmluZyBzID0gaS5rZXkoKTsKLSAgICAgICAgICAgIEpTVmFsdWUg
dmFsID0gY29udmVydFFWYXJpYW50VG9WYWx1ZShleGVjLCByb290LmdldCgpLCBpLnZhbHVlKCkp
OwotICAgICAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90OwotICAgICAgICAgICAgICAgIHJldC0+bWV0aG9kVGFibGUoKS0+cHV0KHJldCwgZXhl
YywgSWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpLCByZWludGVycHJldF9jYXN0X3B0cjxj
b25zdCBVQ2hhciAqPihzLmNvbnN0RGF0YSgpKSwgcy5sZW5ndGgoKSksIHZhbCwgc2xvdCk7Ci0g
ICAgICAgICAgICAgICAgLy8gIyMjIGVycm9yIGNhc2U/Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4ocy5jb25zdERhdGEoKSksIHMubGVu
Z3RoKCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcm9wZXJ0eVZhbHVlID0gY29udmVydFFW
YXJpYW50VG9WYWx1ZShjb250ZXh0LCByb290LmdldCgpLCBpLnZhbHVlKCksIC8qaWdub3JlZCBl
eGNlcHRpb24qLzApOworICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUpCisgICAgICAgICAg
ICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCByZXQsIHByb3BlcnR5TmFtZSwgcHJv
cGVydHlWYWx1ZSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCAvKmlnbm9yZWQgZXhjZXB0aW9u
Ki8wKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgKytpOwogICAgICAgICB9CiAKQEAgLTg4NSwzMSArODg2LDU4IEBAIEpTVmFsdWUgY29u
dmVydFFWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8Um9vdE9iamVj
dD4gcm9vdCwgY29uCiAKICAgICAvLyBMaXN0IHR5cGVzCiAgICAgaWYgKHR5cGUgPT0gUU1ldGFU
eXBlOjpRVmFyaWFudExpc3QpIHsKKyAgICAgICAgLy8gIyMjIFRPRE86IENvdWxkIHVzZSBzcGVj
aWFsIGFycmF5IGNsYXNzIHRoYXQgbGF6aWx5IGNvbnZlcnRzLgorICAgICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NjkxCiAgICAgICAgIFFWYXJp
YW50TGlzdCB2bCA9IHZhcmlhbnQudG9MaXN0KCk7Ci0gICAgICAgIHFDb252RGVidWcoKSA8PCAi
Z290IGEgIiA8PCB2bC5jb3VudCgpIDw8ICIgbGVuZ3RoIGxpc3Q6IiA8PCB2bDsKLSAgICAgICAg
cmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3JlYXRlKGV4ZWMsIG5ldyBRdEFycmF5PFFWYXJpYW50Pih2
bCwgUU1ldGFUeXBlOjpWb2lkLCByb290KSk7CisgICAgICAgIEpTT2JqZWN0UmVmIGFycmF5ID0g
SlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgMCwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGFycmF5OworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZsLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAg
SlNWYWx1ZVJlZiBwcm9wZXJ0eSA9IGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoY29udGV4dCwgcm9v
dC5nZXQoKSwgdmwuYXQoaSksIC8qaWdub3JlZCBleGNlcHRpb24qLzApOworICAgICAgICAgICAg
aWYgKHByb3BlcnR5KQorICAgICAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4
KGNvbnRleHQsIGFycmF5LCBpLCBwcm9wZXJ0eSwgLyppZ25vcmVkIGV4Y2VwdGlvbiovMCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBR
TWV0YVR5cGU6OlFTdHJpbmdMaXN0KSB7CiAgICAgICAgIFFTdHJpbmdMaXN0IHNsID0gdmFyaWFu
dC52YWx1ZTxRU3RyaW5nTGlzdD4oKTsKLSAgICAgICAgcmV0dXJuIFJ1bnRpbWVBcnJheTo6Y3Jl
YXRlKGV4ZWMsIG5ldyBRdEFycmF5PFFTdHJpbmc+KHNsLCBRTWV0YVR5cGU6OlFTdHJpbmcsIHJv
b3QpKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSkgcU1ldGFUeXBl
SWQ8UU9iamVjdExpc3Q+KCkpIHsKLSAgICAgICAgUU9iamVjdExpc3Qgb2w9IHZhcmlhbnQudmFs
dWU8UU9iamVjdExpc3Q+KCk7Ci0gICAgICAgIHJldHVybiBSdW50aW1lQXJyYXk6OmNyZWF0ZShl
eGVjLCBuZXcgUXRBcnJheTxRT2JqZWN0Kj4ob2wsIFFNZXRhVHlwZTo6UU9iamVjdFN0YXIsIHJv
b3QpKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gKFFNZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJ
ZDxRTGlzdDxpbnQ+ID4oKSkgewotICAgICAgICBRTGlzdDxpbnQ+IGlsPSB2YXJpYW50LnZhbHVl
PFFMaXN0PGludD4gPigpOwotICAgICAgICByZXR1cm4gUnVudGltZUFycmF5OjpjcmVhdGUoZXhl
YywgbmV3IFF0QXJyYXk8aW50PihpbCwgUU1ldGFUeXBlOjpJbnQsIHJvb3QpKTsKKyAgICAgICAg
SlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCBleGNl
cHRpb24pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNsLmNvdW50KCk7ICsraSkgewor
ICAgICAgICAgICAgY29uc3QgUVN0cmluZyYgcyA9IHNsLmF0KGkpOworICAgICAgICAgICAgSlNT
dHJpbmdSZWYganNTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4ocy5jb25zdERhdGEoKSksIHMubGVuZ3RoKCkpOworICAg
ICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgYXJyYXksIGksIEpT
VmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGpzU3RyaW5nKSwgLyppZ25vcmVkIGV4Y2VwdGlvbiov
MCk7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UoanNTdHJpbmcpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gc3RhdGljX2Nhc3Q8
UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRT2JqZWN0TGlzdD4oKSkpIHsKKyAgICAgICAg
UU9iamVjdExpc3Qgb2wgPSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0PigpOworICAgICAgICBK
U09iamVjdFJlZiBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIGV4Y2Vw
dGlvbik7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgb2wuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBKU1Zh
bHVlUmVmIGpzT2JqZWN0ID0gdG9SZWYoZXhlYywgUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShv
bC5hdChpKSwgcm9vdCwgUXRJbnN0YW5jZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2Jq
ZWN0KGV4ZWMpKTsKKyAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRl
eHQsIGFycmF5LCBpLCBqc09iamVjdCwgLyppZ25vcmVkIGV4Y2VwdGlvbiovMCk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBzdGF0aWNf
Y2FzdDxRTWV0YVR5cGU6OlR5cGU+KHFNZXRhVHlwZUlkPFFMaXN0PGludD4gPigpKSkgeworICAg
ICAgICBRTGlzdDxpbnQ+IGlsID0gdmFyaWFudC52YWx1ZTxRTGlzdDxpbnQ+ID4oKTsKKyAgICAg
ICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCBl
eGNlcHRpb24pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlsLmNvdW50KCk7ICsraSkK
KyAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBp
LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBpbC5hdChpKSksIC8qaWdub3JlZCBleGNlcHRp
b24qLzApOworICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgPT0g
KFFNZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgewogICAgICAgICBRVmFy
aWFudCByZWFsID0gdmFyaWFudC52YWx1ZTxRVmFyaWFudD4oKTsKICAgICAgICAgcUNvbnZEZWJ1
ZygpIDw8ICJyZWFsIHZhcmlhbnQgaXM6IiA8PCByZWFsOwotICAgICAgICByZXR1cm4gY29udmVy
dFFWYXJpYW50VG9WYWx1ZShleGVjLCByb290LCByZWFsKTsKKyAgICAgICAgcmV0dXJuIGNvbnZl
cnRRVmFyaWFudFRvVmFsdWUoY29udGV4dCwgcm9vdC5nZXQoKSwgcmVhbCwgZXhjZXB0aW9uKTsK
ICAgICB9CiAKICAgICBxQ29udkRlYnVnKCkgPDwgImZhbGxiYWNrIHBhdGggZm9yIiA8PCB2YXJp
YW50IDw8IHZhcmlhbnQudXNlclR5cGUoKTsKIAogICAgIFFTdHJpbmcgc3RyaW5nID0gdmFyaWFu
dC50b1N0cmluZygpOwotICAgIFVTdHJpbmcgdXN0cmluZygoVUNoYXIqKXN0cmluZy51dGYxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsK
KyAgICBKU1N0cmluZ1JlZiBqc3N0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihzdHJpbmcuY29uc3REYXRhKCkpLCBzdHJp
bmcubGVuZ3RoKCkpOworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhj
b250ZXh0LCBqc3N0cmluZyk7CisgICAgSlNTdHJpbmdSZWxlYXNlKGpzc3RyaW5nKTsKKyAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFR5cGUgY29udmVyc2lvbiBtZXRhZGF0YSAoZnJvbSBRdFNj
cmlwdCBvcmlnaW5hbGx5KQpAQCAtMTMzMCw3ICsxMzU4LDcgQEAgSlNWYWx1ZVJlZiBRdFJ1bnRp
bWVNZXRob2Q6OmNhbGwoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU08KICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAg
ICAgaWYgKHZhcmdzLnNpemUoKSA+IDAgJiYgdmFyZ3NbMF0uaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gdG9SZWYodG9KUyhjb250ZXh0KSwgY29udmVydFFWYXJpYW50VG9WYWx1ZSh0b0pTKGNv
bnRleHQpLCBkLT5tX2luc3RhbmNlLT5yb290T2JqZWN0KCksIHZhcmdzWzBdKSk7CisgICAgICAg
IHJldHVybiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKGNvbnRleHQsIGQtPm1faW5zdGFuY2UtPnJv
b3RPYmplY3QoKSwgdmFyZ3NbMF0sIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC0xNjQ4LDcgKzE2NzYsNyBAQCB2b2lkIFF0Q29u
bmVjdGlvbk9iamVjdDo6ZXhlY3V0ZSh2b2lkKiogYXJndikKIAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgIGludCBhcmdUeXBlID0gbWV0aG9kLnBhcmFtZXRl
clR5cGUoaSk7Ci0gICAgICAgIGFyZ3NbaV0gPSA6OnRvUmVmKGV4ZWMsIGNvbnZlcnRRVmFyaWFu
dFRvVmFsdWUoZXhlYywgbV9yb290T2JqZWN0LCBRVmFyaWFudChhcmdUeXBlLCBhcmd2W2krMV0p
KSk7CisgICAgICAgIGFyZ3NbaV0gPSBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKHRvUmVmKGV4ZWMp
LCBtX3Jvb3RPYmplY3QsIFFWYXJpYW50KGFyZ1R5cGUsIGFyZ3ZbaSsxXSksIGlnbm9yZWRFeGNl
cHRpb24pOwogICAgIH0KIAogICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24obV9jb250ZXh0LCBt
X3JlY2VpdmVyRnVuY3Rpb24sIG1fcmVjZWl2ZXIsIGFyZ2MsIGFyZ3MuZGF0YSgpLCAwKTsKQEAg
LTE3MDAsNyArMTcyOCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBKU1ZhbHVlIFF0QXJyYXk8
VD46OnZhbHVlQXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbnQKIHsKICAgICBpZiAoaW5k
ZXggPCBtX2xlbmd0aCkgewogICAgICAgICBUIHZhbCA9IG1fbGlzdC5hdChpbmRleCk7Ci0gICAg
ICAgIHJldHVybiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVlKGV4ZWMsIHJvb3RPYmplY3QoKSwgUVZh
cmlhbnQ6OmZyb21WYWx1ZSh2YWwpKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRRVmFyaWFudFRv
VmFsdWUodG9SZWYoZXhlYyksIHJvb3RPYmplY3QoKSwgUVZhcmlhbnQ6OmZyb21WYWx1ZSh2YWwp
KTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5oCmluZGV4IDNhZDg5ZTU1MDhiYTBmN2U3ZmI5NThkZGJjMzI1OTRiZmNm
NTM3YzYuLjZmNzU0M2RiN2ZkOTIzNjQ0OWE3YjA0MGUyMzg5ZGEzYTAyM2YxOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHR5cGVkZWYg
SlNWYWx1ZSAoKkNvbnZlcnRUb0pTVmFsdWVGdW5jdGlvbikoRXhlY1N0YXRlKiBleGVjLCBXZWJD
b3JlOjpKU0RPTUdsb2JhCiB2b2lkIHJlZ2lzdGVyQ3VzdG9tVHlwZShpbnQgcXRNZXRhVHlwZUlk
LCBDb252ZXJ0VG9WYXJpYW50RnVuY3Rpb24sIENvbnZlcnRUb0pTVmFsdWVGdW5jdGlvbik7CiAK
IFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUgaGludCwgaW50ICpkaXN0YW5jZSk7Ci1KU1ZhbHVlIGNv
bnZlcnRRVmFyaWFudFRvVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFJvb3RPYmpl
Y3Q+IHJvb3QsIGNvbnN0IFFWYXJpYW50JiB2YXJpYW50KTsKK0pTVmFsdWVSZWYgY29udmVydFFW
YXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4sIGNvbnN0
IFFWYXJpYW50JiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogdm9pZCBzZXRFeGNlcHRpb24o
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGNvbnN0IFFTdHJpbmcmIHRleHQp
OwogCg==
</data>
<flag name="review"
          id="170324"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>