<?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>157459</bug_id>
          
          <creation_ts>2016-05-07 23:19:19 -0700</creation_ts>
          <short_desc>Change EventSource constructor to take an IDL dictionary instead of a WebCore::Dictionary</short_desc>
          <delta_ts>2016-05-08 11:46:12 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157463</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1191021</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-07 23:19:19 -0700</bug_when>
    <thetext>Change EventSource constructor to take an IDL dictionary instead of a WebCore::Dictionary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191022</commentid>
    <comment_count>1</comment_count>
      <attachid>278355</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-07 23:27:30 -0700</bug_when>
    <thetext>Created attachment 278355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191025</commentid>
    <comment_count>2</comment_count>
      <attachid>278355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-07 23:34:30 -0700</bug_when>
    <thetext>Comment on attachment 278355
Patch

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

&gt; Source/WebCore/page/EventSource.cpp:60
&gt; +inline EventSource::EventSource(ScriptExecutionContext&amp; context, const URL&amp; url, const Optional&lt;Init&gt;&amp; eventSourceInit)

This is probably my bug but I don&apos;t think we should use Optional&lt;&gt; for dictionaries. Web IDL says:
&quot;&quot;&quot;
If the type of an argument is a dictionary type or a union type that has a dictionary type as one of its flattened member types, and that dictionary type and its ancestors have no required members, and the argument is either the final argument or is followed only by optional arguments, then the argument must be specified as optional. Such arguments are always considered to have a default value of an empty dictionary, unless otherwise specified.
&quot;&quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191037</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 00:14:26 -0700</bug_when>
    <thetext>Sounds like that does cover this case. So we should say optional in the IDL but the code should not generate an Optional&lt;&gt;. Should be really quick to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191051</commentid>
    <comment_count>4</comment_count>
      <attachid>278355</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 08:26:26 -0700</bug_when>
    <thetext>Comment on attachment 278355
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:54
&gt; +template&lt;&gt; inline bool convert&lt;bool&gt;(JSC::ExecState&amp; state, JSC::JSValue value)
&gt; +{
&gt; +    return value.toBoolean(&amp;state);
&gt; +}

I will rebase because this function was added to JSDOMConvert.h by another of my patches last night.

&gt;&gt; Source/WebCore/page/EventSource.cpp:60
&gt;&gt; +inline EventSource::EventSource(ScriptExecutionContext&amp; context, const URL&amp; url, const Optional&lt;Init&gt;&amp; eventSourceInit)
&gt; 
&gt; This is probably my bug but I don&apos;t think we should use Optional&lt;&gt; for dictionaries. Web IDL says:
&gt; &quot;&quot;&quot;
&gt; If the type of an argument is a dictionary type or a union type that has a dictionary type as one of its flattened member types, and that dictionary type and its ancestors have no required members, and the argument is either the final argument or is followed only by optional arguments, then the argument must be specified as optional. Such arguments are always considered to have a default value of an empty dictionary, unless otherwise specified.
&gt; &quot;&quot;&quot;

I will change this to not use Optional after landing a patch I am working on that fixes the handling of undefined and null and obviates the need for Optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191061</commentid>
    <comment_count>5</comment_count>
      <attachid>278363</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 10:22:19 -0700</bug_when>
    <thetext>Created attachment 278363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191066</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 10:51:59 -0700</bug_when>
    <thetext>Patch is doing well on EWS. Ready to get reviewed and land!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191070</commentid>
    <comment_count>7</comment_count>
      <attachid>278363</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-08 11:01:04 -0700</bug_when>
    <thetext>Comment on attachment 278363
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:67
&gt; +        * page/EventSource.idl: U

U ?

&gt; Source/WTF/wtf/text/WTFString.h:59
&gt; +WTF_EXPORT_STRING_API uint64_t charactersToUInt64(const UChar*, size_t, bool* ok = 0); // ignores trailing garbage

= nullptr

&gt; Source/WebCore/page/EventSource.cpp:289
&gt; +                position++;

++position

&gt; Source/WebCore/page/EventSource.cpp:295
&gt; +        for (unsigned i = position; !lineLength &amp;&amp; i &lt; size; i++) {

++i

&gt; Source/WebCore/page/EventSource.cpp:401
&gt; +    auto data = SerializedScriptValue::create(StringView { m_data.data(), size });

Do we need to explicitly say StringView? Wouldn&apos;t &quot;{ m_data.data(), size }&quot; work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191076</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-08 11:46:12 -0700</bug_when>
    <thetext>Committed r200558: &lt;http://trac.webkit.org/changeset/200558&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278355</attachid>
            <date>2016-05-07 23:27:30 -0700</date>
            <delta_ts>2016-05-08 10:22:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157459-20160507232814.patch</filename>
            <type>text/plain</type>
            <size>7973</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyMjY5ZTJlYWVlZjIx
YmMyMDI5MGNjNmJjNzc1M2IwZTI0MWRhYy4uZDVhZmRjYjBkMzdmYmM5Nzg1ODg2NGE3MjQ5Zjg0
ZmVhOWI2YzhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA1LTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgRXZlbnRTb3VyY2Ug
Y29uc3RydWN0b3IgdG8gdGFrZSBhbiBJREwgZGljdGlvbmFyeSBpbnN0ZWFkIG9mIGEgV2ViQ29y
ZTo6RGljdGlvbmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU3NDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnQ8Ym9vbD4pOiBBZGRlZC4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKTogSW5pdGlhbGl6ZSBi
YXNlZCBvbiBJbml0LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZSk6IFRh
a2UvcGFzcyBJbml0IGluc3RlYWQgb2YgRGljdGlvbmFyeS4KKyAgICAgICAgKiBwYWdlL0V2ZW50
U291cmNlLmg6IERlZmluZSBJbml0IHN0cnVjdC4KKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmlkbDogRGVmaW5lIEV2ZW50U291cmNlSW5pdCBkaWN0aW9uYXJ5IGFuZCB1c2UgaXQuCisKIDIw
MTYtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1
Y2Ugc3BlY2lhbCBoYW5kbGluZyBvZiBYUGF0aE5TUmVzb2x2ZXIgdHlwZSBpbiB0aGUgYmluZGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggYjhjZTM0
NWMzNTI3MjI5ZjZlYjhkNDhlYzlmYTExZjk4NmJjMTNjZS4uZGVjNDBiOGFjOWY4MTNlM2I0NWI3
YjAxNGY2YzBlYWNiYmU5M2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0LmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBUIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAg
cmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBzdGQ6OmZvcndhcmQ8VT4oZGVmYXVsdFZhbHVl
KSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlKTsKIH0KIAordGVtcGxhdGU8PiBpbmxpbmUgYm9v
bCBjb252ZXJ0PGJvb2w+KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQoreworICAgIHJldHVybiB2YWx1ZS50b0Jvb2xlYW4oJnN0YXRlKTsKK30KKwogdGVtcGxhdGU8
PiBpbmxpbmUgU3RyaW5nIGNvbnZlcnQ8U3RyaW5nPihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMWRjNDNjYWQ2ODQ3MTE5NGE5
ZjAyODY3YmExOGFjNGFjZDUyZmUzMy4uNDJjYTFhNzY2MGJiMWM4NWJmMzk4ZDdmNGFlMmY2NDVh
Y2M0Nzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTU3LDEwICs1Nywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBFdmVu
dFNvdXJjZTo6ZGVmYXVsdFJlY29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5lIEV2ZW50U291
cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQoraW5saW5lIEV2ZW50
U291cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgT3B0aW9uYWw8SW5pdD4mIGV2ZW50U291cmNlSW5pdCkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fdXJsKHVybCkKLSAgICAsIG1fd2l0
aENyZWRlbnRpYWxzKGZhbHNlKQorICAgICwgbV93aXRoQ3JlZGVudGlhbHMoZXZlbnRTb3VyY2VJ
bml0ICYmIGV2ZW50U291cmNlSW5pdC0+d2l0aENyZWRlbnRpYWxzKQogICAgICwgbV9zdGF0ZShD
T05ORUNUSU5HKQogICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9wbGFpbiIsICJVVEYtOCIpKQogICAgICwgbV9jb25uZWN0VGltZXIoKnRoaXMsICZFdmVu
dFNvdXJjZTo6Y29ubmVjdCkKQEAgLTY4LDEwICs2OCw5IEBAIGlubGluZSBFdmVudFNvdXJjZTo6
RXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1
cmwsCiAgICAgLCBtX3JlcXVlc3RJbkZsaWdodChmYWxzZSkKICAgICAsIG1fcmVjb25uZWN0RGVs
YXkoZGVmYXVsdFJlY29ubmVjdERlbGF5KQogewotICAgIGV2ZW50U291cmNlSW5pdC5nZXQoIndp
dGhDcmVkZW50aWFscyIsIG1fd2l0aENyZWRlbnRpYWxzKTsKIH0KIAotUmVmUHRyPEV2ZW50U291
cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBldmVudFNvdXJjZUluaXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEV2ZW50U291cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBPcHRpb25hbDxJbml0PiYgZXZlbnRTb3VyY2VJbml0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC05
MSwxMyArOTAsMTMgQEAgUmVmUHRyPEV2ZW50U291cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEV2ZW50U291cmNlPiBzb3VyY2UgPSBhZG9wdFJl
ZihuZXcgRXZlbnRTb3VyY2UoY29udGV4dCwgZnVsbFVSTCwgZXZlbnRTb3VyY2VJbml0KSk7Cisg
ICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IEV2ZW50U291cmNlKGNvbnRleHQsIGZ1bGxV
UkwsIGV2ZW50U291cmNlSW5pdCkpOwogCi0gICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHko
c291cmNlLmdldCgpKTsKKyAgICBzb3VyY2UtPnNldFBlbmRpbmdBY3Rpdml0eShzb3VyY2UucHRy
KCkpOwogICAgIHNvdXJjZS0+c2NoZWR1bGVJbml0aWFsQ29ubmVjdCgpOwogICAgIHNvdXJjZS0+
c3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4gc291cmNlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShzb3VyY2UpOwogfQogCiBFdmVudFNvdXJjZTo6fkV2ZW50U291cmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCA0YzFlMjI0MDQ2ODRlMTY3NzAwMmRiYmIw
ZGZlNWYzNWRhM2ViYmM5Li5mNjI2Njg0ZGU3NGQ5MmRjY2Q5YTVjZDgwNGFiY2JkNzlhMWM4ODZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNywyMSArMzcsMjEgQEAKICNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBN
ZXNzYWdlRXZlbnQ7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiAKIGNsYXNzIEV2ZW50U291cmNlIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEV2ZW50U291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHN0cnVjdCBJbml0IHsKKyAgICAgICAgYm9vbCB3aXRoQ3JlZGVudGlhbHM7CisgICAg
fTsKKyAgICBzdGF0aWMgUmVmUHRyPEV2ZW50U291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBPcHRpb25hbDxJbml0PiYsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5FdmVudFNvdXJjZSgpOwogCiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UmVjb25uZWN0RGVsYXk7CkBAIC03MSwyNiAr
NzEsMjYgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+OjpyZWY7
CiAgICAgdXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46OmRlcmVmOwogCi0gICAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBFdmVudFNvdXJjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gRXZlbnRTb3VyY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
VVJMJiwgY29uc3QgRGljdGlvbmFyeSYpOworICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBVUkwmLCBjb25zdCBPcHRpb25hbDxJbml0PiYpOwogCi0gICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
ZGVyZWYoKTsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEZhaWxBY2Nlc3NDb250cm9s
Q2hlY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmFpbFJl
ZGlyZWN0Q2hlY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsUmVkaXJl
Y3RDaGVjaygpIGZpbmFsOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZTsKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBjb25uZWN0
KCk7CiAgICAgdm9pZCBuZXR3b3JrUmVxdWVzdEVuZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaWRsCmluZGV4IGIwNjlhYTgyNjNjZjJkNmZkNmExZTE4ZjBiNWVjYTYzN2ExMjBmMGIu
LjgwYjg2ZGNjNTUyOTIyNDIyOWVmNTk5OGMxZGVmMTJmYmQ4ZDYwNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuaWRsCkBAIC0zMiwxMSArMzIsMTAgQEAKIFsKICAgICBFeHBvc2VkPShX
aW5kb3csV29ya2VyKSwKICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgQ29uc3RydWN0b3IoRE9N
U3RyaW5nIHVybCwgb3B0aW9uYWwgRGljdGlvbmFyeSBldmVudFNvdXJjZUluaXQpLAorICAgIENv
bnN0cnVjdG9yKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIEV2ZW50U291cmNlSW5pdCBldmVudFNv
dXJjZUluaXREaWN0KSwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCiAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiBdIGludGVyZmFjZSBFdmVu
dFNvdXJjZSA6IEV2ZW50VGFyZ2V0IHsKLQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgVVJMOyAvLyBMb3dlcmNhc2VkIC51cmwgaXMgdGhlIG9uZSBpbiB0aGUgc3BlYywgYnV0IGxl
YXZpbmcgLlVSTCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgdXJsOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdpdGhD
cmVkZW50aWFsczsKQEAgLTUzLDMgKzUyLDcgQEAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uZXJyb3I7CiAgICAgdm9pZCBjbG9zZSgpOwogfTsKKworZGljdGlvbmFyeSBFdmVudFNvdXJj
ZUluaXQgeworICAgIGJvb2xlYW4gd2l0aENyZWRlbnRpYWxzID0gZmFsc2U7Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278363</attachid>
            <date>2016-05-08 10:22:19 -0700</date>
            <delta_ts>2016-05-08 11:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157459-20160508102304.patch</filename>
            <type>text/plain</type>
            <size>33931</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM5OGQzYzU2MDhlY2QzMjJjMDA5N2M3
MWYyYzJkOWQ5NjEyM2E3MWUuLmVmYzgyZDg3MTE5NzVlYzk5NDRjYjY4OGNkOWIwODM0ODQ2M2Q3
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDUtMDggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciB0byB0
YWtlIGFuIElETCBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSBXZWJDb3JlOjpEaWN0aW9uYXJ5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc0NTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1dURlN0cmluZy5oOiBFeHBvcnQgYSBzeW1ib2wgbm93IHVzZWQgaW4gV2ViQ29yZS4KKwogMjAx
Ni0wNS0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE9uIHBsYXRm
b3JtcyB0aGF0IHN1cHBvcnQgaXQsIHVzZSBhIFNlY1RydXN0UmVmIGFzIHRoZSBiYXNpcyBvZiBD
ZXJ0aWZpY2F0ZUluZm8gaW5zdGVhZCBvZiBhIGNoYWluIG9mIFNlY0NlcnRpZmljYXRlUmVmcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTcyZjVhNmNkMWU2M2E2MDIwNTE5NzI4NzRlYzliZmJiZWQxNWNkLi5m
NGQzODE3ZTVlYmJmM2RhYWJkYmRiYjg1ZWRjMjAyMzVmYjRhYTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNzMgQEAKIDIwMTYtMDUtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CisgICAgICAgIENoYW5nZSBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciB0byB0YWtlIGFuIElETCBk
aWN0aW9uYXJ5IGluc3RlYWQgb2YgYSBXZWJDb3JlOjpEaWN0aW9uYXJ5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc0NTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBhbHNvIGluY2x1ZGVzIHNv
bWUgdXBkYXRpbmcgb2YgRXZlbnRTb3VyY2UgY2xhc3MgdG8gbW9kZXJuIGlkaW9tcy4KKworICAg
ICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3Vy
Y2U6OkV2ZW50U291cmNlKTogSW5pdGlhbGl6ZSBiYXNlZCBvbiBJbml0LgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZSk6IFRha2UvcGFzcyBJbml0IGluc3RlYWQgb2YgRGlj
dGlvbmFyeS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6IFRha2Ug
YSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBzdHJpbmcKKyAgICAgICAgc28gY2FsbGVycyBkb24n
dCBoYXZlIHRvIGFsbG9jYXRlIGEgU3RyaW5nIGp1c3QgdG8gdXNlIHRoaXMuCisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBEaXR0by4KKworICAgICAgICAq
IHBhZ2UvRXZlbnRTb3VyY2UuY3BwOiBDaGFuZ2VkIGRlZmF1bHRSZWNvbm5lY3REZWxheSB0byBi
ZSBhIHVpbnQ2NF90CisgICAgICAgIGluc3RlYWQgb2YgYW4gdW5zaWduZWQgbG9uZyBsb25nLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKTogQ2hhbmdlZCBjb25z
dHJ1Y3RvciB0byB0YWtlIGEgc3RydWN0CisgICAgICAgIGluc3RlYWQgb2YgYSBEaWN0aW9uYXJ5
IGZvciBldmVudFNvdXJjZUluaXQuIEFsc28gbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YKKyAgICAg
ICAgZGF0YSBtZW1iZXJzIHRvIHRoZSBoZWFkZXIgYW5kIHVzZWQgQVNDSUlMaXRlcmFsLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZSk6IENoYW5nZWQgdHlwZSB0byBJbml0
IGFuZCBzdHJlYW1saW5lZCBjb2RlCisgICAgICAgIGEgbGl0dGxlIGJpdCB1c2luZyBhdXRvLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNvbm5lY3QpOiBVc2VkIGEgcmVmZXJlbmNl
IGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICBBbHNvIGFkZGVkIGEgRklYTUUgc2luY2Ug
SSBub3RpY2VkIHRoYXQgbV9yZXF1ZXN0SW5GbGlnaHQgaXMgcHJvYmFibHkgbm90CisgICAgICAg
IG5lZWRlZCwgc2luY2UgaXQncyBiYXNpY2FsbHkgdGhlIHNhbWUgdGhpbmcgYXMgImlzIG1fbG9h
ZGVyIG51bGwiLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OnVybCk6IE1vdmVkIHRv
IHRoZSBoZWFkZXIgYW5kIG1hZGUgaXQgaW5saW5lLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRT
b3VyY2U6Om5ldHdvcmtSZXF1ZXN0RW5kZWQpOiBSZW1vdmVkIHVubmVlZGVkIGNoZWNrIHRoYXQK
KyAgICAgICAgaXMgYWxyZWFkeSBkb25lIGJ5IGFsbCBjYWxsZXJzIGFuZCB0dXJuZWQgaXQgaW50
byBhbiBhc3NlcnRpb24uCisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6d2l0aENyZWRl
bnRpYWxzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6cmVhZHlTdGF0
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OnJlc3BvbnNlSXNWYWxp
ZCk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rpb24gdG8gbWFrZQorICAgICAgICB0aGUgbG9naWMgaW4g
ZGlkUmVjZWl2ZVJlc3BvbnNlIGVhc2llciB0byByZWFkLiBGaXhlZCBsb2dpYyB0byBjb21wYXJl
CisgICAgICAgIE1JTUUgdHlwZSBpZ25vcmluZyBBU0NJSSBjYXNlLCBzaW5jZSB0aGF0J3MgaG93
IE1JTUUgdHlwZXMgd29yay4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOiBVc2UgdGhlIGhlbHBlciBhYm92ZSwgYW5kIGFsc28KKyAgICAgICAgbW92
ZSB0aGUgbV9ldmVudFN0cmVhbU9yaWdpbiBzZXQgdXAgY29kZSBpbnRvIHRoZSB2YWxpZCByZXNw
b25zZSBjYXNlLAorICAgICAgICBzaW5jZSB0aGVyZSBpcyBubyBwb2ludCBkb2luZyBpdCBpZiB0
aGUgcmVzcG9uc2UgaXMgbm90IHZhbGlkLiBBbHNvIHVzZQorICAgICAgICB0aGUgZWFybHkgcmV0
dXJuIGlkaW9tLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRh
KTogUmVtb3ZlZCB0aGUgdW5uZWVkZWQgZXhwbGljaXQKKyAgICAgICAgY29udmVyc2lvbiB0byBT
dHJpbmdWaWV3IGhlcmUuIEFsc28gcmVtb3ZlZCBhIEZJWE1FIHRoYXQgSSBmaXhlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKTogQWRkZWQgY29kZSB0
byBmbHVzaCB0aGUgZGVjb2RlcgorICAgICAgICBhcyBtZW50aW9uZWQgaW4gZGlkUmVjZWl2ZURh
dGEuIEFkZGVkIEZJWE1FIGFib3V0IHBlY3VsaWFyIGNsZWFyaW5nIGNvZGUKKyAgICAgICAgdGhh
dCBleGlzdHMgb25seSBoZXJlLiBSZW1vdmVkIGNoZWNrIGZvciBlbXB0eSByZWNlaXZlIGJ1ZmZl
ciBhbmQgZGF0YQorICAgICAgICB0aGF0IGlzIG5vdCBuZWVkZWQgc2luY2UgcGFyc2VFdmVudFN0
cmVhbSBkb2VzIHN1ZmZpY2llbnQgY2hlY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6ZGlkRmFpbCk6IEFkZGVkIEZJWE1FIGJlY2F1c2Ugb2YgdGhpbmdzIHRoYXQKKyAgICAg
ICAgZGlkRmluaXNoTG9hZGluZyBkb2VzIHRoYXQgc2VlbSBlcXVhbGx5IHZhbHVhYmxlIGhlcmUu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbSk6IFR3ZWFr
ZWQgdHlwZXMgYW5kIG5hbWVzIG9mIGxvY2FsCisgICAgICAgIHZhcmlhYmxlcywgYW5kIGNoYW5n
ZWQgdG8gdXNlIE9wdGlvbmFsIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVyIC0xLiBBbHNvCisgICAg
ICAgIGFkZGVkIGEgRklYTUUgYWJvdXQgaG93IHRoZSBidWZmZXIgdHlwZSBpcyBwcm9iYWJseSBu
b3QgcmlnaHQgc2luY2Ugd2UKKyAgICAgICAga2VlcCBtb3ZpbmcgdGhlIGNoYXJhY3RlcnMgaW4g
dGhlIGJ1ZmZlciBhcyB3ZSBjb25zdW1lIHRoZSBzdGFydCBvZiBpdC4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6IFJlZmFjdG9yIGFuZCByZW9y
Z2FuaXplIHNvCisgICAgICAgIHRoaXMgZG9lc24ndCBkbyBzbyBtdWNoIHN0cmluZyBhbGxvY2F0
aW9uIGFuZCBpcyBlYXNpZXIgdG8gcmVhZAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6
OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24pOiBUd2Vha2VkIGNvbW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOiBSZW5hbWVk
IHRoaXMgZnJvbQorICAgICAgICBjcmVhdGVNZXNzYWdlRXZlbnQsIGFuZCBtb3ZlZCBtb3JlIGNv
ZGUgaW4gaGVyZS4gV2Ugbm93IGRvbid0IGhhdmUgdG8KKyAgICAgICAgYWxsb2NhdGUgYSB0ZW1w
b3Jhcnkgc3RyaW5nIGp1c3QgdG8gcGFzcyBpdCB0byBTZXJpYWxpemVkU2NyaXB0VmFsdWUuCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJvdmUu
IFVzZSBwcmFnbWEgb25jZS4KKyAgICAgICAgRGVmaW5lIGFuZCB1c2UgRXZlbnRTb3VyY2U6Oklu
aXQgc3RydWN0LiBPdGhlciBzbWFsbCBjbGVhbnVwLgorCisgICAgICAgICogcGFnZS9FdmVudFNv
dXJjZS5pZGw6IERlZmluZSBFdmVudFNvdXJjZUluaXQgZGljdGlvbmFyeSBhbmQgdXNlIGl0Lgor
ICAgICAgICBPdGhlciBzbWFsbCBjbGVhbnVwLgorCisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5pZGw6IFUKKworMjAxNi0wNS0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
ICAgICAgICAgQ29ycmVjdCBkaWN0aW9uYXJ5IGJpbmRpbmdzIGhhbmRsaW5nIG9mIG9wdGlvbmFs
LCBudWxsLCBhbmQgdW5kZWZpbmVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTc0NjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZDEwY2E3
MjM3YzllOTViYWFlMjI0NmM0NmI2MWQyZWRjNmYxNGEwYy4uYzJmMjc1OWEzZWZhYTk5ZWVkYzJk
ZTM2MzQ2YTJmZWI1ZDE1Mjc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zNCw2ICsz
NCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitjbGFzcyBBU0NJSUxpdGVyYWw7CisKIC8vIERl
Y2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBXVEZfRVhQT1JUX1NUUklOR19BUEkg
aW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTU0LDcgKzU2LDcgQEAgdW5zaWduZWQgY2hhcmFjdGVy
c1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGkKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0
ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQot
dWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKK1dURl9FWFBPUlRfU1RSSU5HX0FQ
SSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50cHRyX3QgY2hhcmFjdGVy
c1RvSW50UHRyKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVz
IHRyYWlsaW5nIGdhcmJhZ2UKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAK
QEAgLTY4LDE1ICs3MCw5IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0ZXJz
VG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwCiBXVEZfRVhQT1JUX1NU
UklOR19BUEkgZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgTENoYXIqLCBzaXplX3QsIHNp
emVfdCYgcGFyc2VkTGVuZ3RoKTsKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0
ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOwog
Ci1jbGFzcyBBU0NJSUxpdGVyYWw7Ci0KLWVudW0gVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xp
Y3kgewotICAgIEtlZXBUcmFpbGluZ1plcm9zLAotICAgIFRydW5jYXRlVHJhaWxpbmdaZXJvcwot
fTsKK3RlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5
cGUqLCBzaXplX3QpOwogCi10ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhciks
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29u
c3QgQ2hhcmFjdGVyVHlwZSosIHNpemVfdCk7CitlbnVtIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5n
UG9saWN5IHsgS2VlcFRyYWlsaW5nWmVyb3MsIFRydW5jYXRlVHJhaWxpbmdaZXJvcyB9OwogCiBj
bGFzcyBTdHJpbmcgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYTdlM2FlYmQ4YTFlOGFiMDVhZTRk
MzQ0NDI2YzVjMWIzNmIzZTM5My4uZjZkMmY2ZWY4NTQ3YzY4ZjAxNzUwYjU2NDVjZjFlYzY2Yjk0
MzJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCkBAIC00NzgsMjAgKzQ3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJv
b2wgc2VyaWFsaXplKGNvbnN0IFN0cmluZyYgcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAg
c3RhdGljIGJvb2wgc2VyaWFsaXplKFN0cmluZ1ZpZXcgc3RyaW5nLCBWZWN0b3I8dWludDhfdD4m
IG91dCkKICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgQ3VycmVudFZlcnNp
b24pOwotICAgICAgICBpZiAocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG91dCwgRW1w
dHlTdHJpbmdUYWcpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4ob3V0LCBTdHJpbmdUYWcpOwotICAgICAgICBp
ZiAocy5pczhCaXQoKSkgewotICAgICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzLmxl
bmd0aCgpIHwgU3RyaW5nRGF0YUlzOEJpdEZsYWcpOwotICAgICAgICAgICAgcmV0dXJuIHdyaXRl
TGl0dGxlRW5kaWFuKG91dCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAg
aWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0
LCBzdHJpbmcubGVuZ3RoKCkgfCBTdHJpbmdEYXRhSXM4Qml0RmxhZyk7CisgICAgICAgICAgICBy
ZXR1cm4gd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKICAgICAgICAgfQotICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIHMu
bGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzLmNoYXJh
Y3RlcnMxNigpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBz
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBz
dHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgc2VyaWFsaXplVW5kZWZpbmVkKFZlY3Rvcjx1aW50OF90PiYgb3V0KQpAQCAtMjY4
Nyw3ICsyNjg3LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1YKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywg
V1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKSk7CiB9CiAKLVJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQorUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcjsKICAgICBpZiAoIUNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKHN0cmluZywgYnVm
ZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggNzMxYWNjMmZjMjMxYmY3ZGFiZDY1MDEzNmYyMmYyMDcwM2RlZjM4OC4u
ZDRiODhiYzU0NzZlOThlZGQzYjc0YTI0ZTUwNDJmMzk0ZThiZTQ1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTYyLDcg
KzYyLDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4KIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5KiwgQXJyYXlCdWZmZXJBcnJh
eSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZl
cikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMWRjNDNjYWQ2ODQ3MTE5
NGE5ZjAyODY3YmExOGFjNGFjZDUyZmUzMy4uMzg5YjYyMzA0OTkyNGIwNGJhNTkyMDY2ODJjNmVm
ODhiZTU1M2Y3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVt
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzQsNDQgKzM0LDI5
IEBACiAjaW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeS5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnku
aCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSFRUUEhlYWRl
ck5hbWVzLmgiCi0jaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyBFdmVudFNvdXJjZTo6ZGVmYXVsdFJlY29ubmVjdERlbGF5ID0gMzAwMDsKK2NvbnN0IHVpbnQ2
NF90IEV2ZW50U291cmNlOjpkZWZhdWx0UmVjb25uZWN0RGVsYXkgPSAzMDAwOwogCi1pbmxpbmUg
RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBldmVudFNvdXJjZUluaXQpCitpbmxp
bmUgRXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBJbml0JiBldmVudFNvdXJjZUluaXQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX3dpdGhD
cmVkZW50aWFscyhmYWxzZSkKLSAgICAsIG1fc3RhdGUoQ09OTkVDVElORykKLSAgICAsIG1fZGVj
b2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKSkK
KyAgICAsIG1fd2l0aENyZWRlbnRpYWxzKGV2ZW50U291cmNlSW5pdC53aXRoQ3JlZGVudGlhbHMp
CisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJh
bCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKSkKICAgICAsIG1fY29ubmVjdFRpbWVyKCp0aGlzLCAm
RXZlbnRTb3VyY2U6OmNvbm5lY3QpCi0gICAgLCBtX2Rpc2NhcmRUcmFpbGluZ05ld2xpbmUoZmFs
c2UpCi0gICAgLCBtX3JlcXVlc3RJbkZsaWdodChmYWxzZSkKLSAgICAsIG1fcmVjb25uZWN0RGVs
YXkoZGVmYXVsdFJlY29ubmVjdERlbGF5KQogewotICAgIGV2ZW50U291cmNlSW5pdC5nZXQoIndp
dGhDcmVkZW50aWFscyIsIG1fd2l0aENyZWRlbnRpYWxzKTsKIH0KIAotUmVmUHRyPEV2ZW50U291
cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBldmVudFNvdXJjZUluaXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEV2ZW50U291cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBJbml0JiBldmVudFNvdXJjZUluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICh1
cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTkxLDEzICs3Niwx
MSBAQCBSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8RXZlbnRTb3VyY2U+IHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBFdmVu
dFNvdXJjZShjb250ZXh0LCBmdWxsVVJMLCBldmVudFNvdXJjZUluaXQpKTsKLQotICAgIHNvdXJj
ZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CisgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IEV2ZW50U291cmNlKGNvbnRleHQsIGZ1bGxVUkwsIGV2ZW50U291cmNlSW5p
dCkpOworICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5wdHIoKSk7CiAgICAg
c291cmNlLT5zY2hlZHVsZUluaXRpYWxDb25uZWN0KCk7CiAgICAgc291cmNlLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKLQotICAgIHJldHVybiBzb3VyY2UucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKHNvdXJjZSk7CiB9CiAKIEV2ZW50U291cmNlOjp+RXZlbnRTb3VyY2UoKQpAQCAtMTExLDM2
ICs5NCwzNiBAQCB2b2lkIEV2ZW50U291cmNlOjpjb25uZWN0KCkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBDT05ORUNUSU5HKTsKICAgICBBU1NFUlQoIW1fcmVxdWVzdEluRmxpZ2h0KTsKIAotICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1fdXJsKTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCB7IG1fdXJsIH07CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXB0LCAidGV4dC9l
dmVudC1zdHJlYW0iKTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCAibm8tY2FjaGUiKTsKICAgICBpZiAoIW1fbGFzdEV2ZW50SWQu
aXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6TGFzdEV2ZW50SUQsIG1fbGFzdEV2ZW50SWQpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAg
ICAgb3B0aW9ucy5zZXRTZW5kTG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJhY2tzKTsKICAgICBvcHRp
b25zLnNldFNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCk7Ci0gICAgb3B0aW9ucy5zZXRB
bGxvd0NyZWRlbnRpYWxzKChvcmlnaW4tPmNhblJlcXVlc3QobV91cmwpIHx8IG1fd2l0aENyZWRl
bnRpYWxzKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpOworICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscygob3JpZ2luLmNhblJlcXVl
c3QobV91cmwpIHx8IG1fd2l0aENyZWRlbnRpYWxzKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMg
OiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgIG9wdGlvbnMuc2V0Q3JlZGVudGlh
bFJlcXVlc3QobV93aXRoQ3JlZGVudGlhbHMgPyBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscyA6
IENsaWVudERpZE5vdFJlcXVlc3RDcmVkZW50aWFscyk7CiAgICAgb3B0aW9ucy5wcmVmbGlnaHRQ
b2xpY3kgPSBQcmV2ZW50UHJlZmxpZ2h0OwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAgICBvcHRpb25zLnNldERhdGFCdWZmZXJpbmdQ
b2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBvcHRpb25zLnNlY3VyaXR5T3JpZ2luID0gb3Jp
Z2luOworICAgIG9wdGlvbnMuc2VjdXJpdHlPcmlnaW4gPSAmb3JpZ2luOwogICAgIG9wdGlvbnMu
Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpID8gQ29udGVu
dFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSA6IENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlQ29ubmVjdFNyY0RpcmVjdGl2ZTsKIAogICAgIG1f
bG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgdGhpcywgcmVxdWVzdCwgb3B0aW9ucyk7CiAKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3Qg
dXNlIG1fbG9hZGVyIGZvciB0aGlzLCBudWxsIGl0IG91dCB3aGVuIGl0J3Mgbm8gbG9uZ2VyIGlu
IGZsaWdodCwgYW5kIGVsaW1pbmF0ZSB0aGUgbV9yZXF1ZXN0SW5GbGlnaHQgbWVtYmVyPwogICAg
IGlmIChtX2xvYWRlcikKICAgICAgICAgbV9yZXF1ZXN0SW5GbGlnaHQgPSB0cnVlOwogfQogCiB2
b2lkIEV2ZW50U291cmNlOjpuZXR3b3JrUmVxdWVzdEVuZGVkKCkKIHsKLSAgICBpZiAoIW1fcmVx
dWVzdEluRmxpZ2h0KQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fcmVxdWVzdEluRmxp
Z2h0KTsKIAogICAgIG1fcmVxdWVzdEluRmxpZ2h0ID0gZmFsc2U7CiAKQEAgLTE2NSwyMSArMTQ4
LDYgQEAgdm9pZCBFdmVudFNvdXJjZTo6c2NoZWR1bGVSZWNvbm5lY3QoKQogICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CiB9CiAKLVN0cmluZyBFdmVudFNvdXJjZTo6dXJsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV91cmwuc3RyaW5nKCk7Ci19Ci0KLWJvb2wgRXZlbnRTb3VyY2U6OndpdGhDcmVkZW50aWFscygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2l0aENyZWRlbnRpYWxzOwotfQotCi1FdmVudFNvdXJj
ZTo6U3RhdGUgRXZlbnRTb3VyY2U6OnJlYWR5U3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBt
X3N0YXRlOwotfQotCiB2b2lkIEV2ZW50U291cmNlOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gQ0xPU0VEKSB7CkBAIC0xOTksNDAgKzE2Nyw0NyBAQCB2b2lkIEV2ZW50U291cmNlOjpj
bG9zZSgpCiAgICAgfQogfQogCitib29sIEV2ZW50U291cmNlOjpyZXNwb25zZUlzVmFsaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnN0Cit7CisgICAgLy8gTG9ncyB0byB0
aGUgY29uc29sZSBhcyBhIHNpZGUgZWZmZWN0LgorCisgICAgLy8gVG8ga2VlcCB0aGUgc2lnbmFs
LXRvLW5vaXNlIHJhdGlvIGxvdywgd2UgZG9uJ3QgbG9nIGFueXRoaW5nIGlmIHRoZSBzdGF0dXMg
Y29kZSBpcyBub3QgMjAwLgorICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpICE9IDIw
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShyZXNwb25zZS5taW1lVHlwZSgpLCAidGV4dC9ldmVudC1zdHJlYW0iKSkgewor
ICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNl
IGhhcyBhIE1JTUUgdHlwZSAoXCIiLCByZXNwb25zZS5taW1lVHlwZSgpLCAiXCIpIHRoYXQgaXMg
bm90IFwidGV4dC9ldmVudC1zdHJlYW1cIi4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uIik7Cisg
ICAgICAgIC8vIEZJWE1FOiBDb25zb2xlIG1lc3NhZ2Ugd291bGQgYmUgYmV0dGVyIHdpdGggYSBz
b3VyY2UgY29kZSBsb2NhdGlvbjsgd2hlcmUgd291bGQgd2UgZ2V0IHRoYXQ/CisgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIFdURk1vdmUobWVzc2FnZSkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSWYgd2UgaGF2ZSBhIGNoYXJzZXQsIHRoZSBvbmx5
IGFsbG93ZWQgdmFsdWUgaXMgVVRGLTggKGNhc2UtaW5zZW5zaXRpdmUpLgorICAgIGF1dG8mIGNo
YXJzZXQgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CisgICAgaWYgKCFjaGFyc2V0Lmlz
RW1wdHkoKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY2hhcnNldCwgInV0Zi04
IikpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiRXZlbnRTb3VyY2UncyBy
ZXNwb25zZSBoYXMgYSBjaGFyc2V0IChcIiIsIGNoYXJzZXQsICJcIikgdGhhdCBpcyBub3QgVVRG
LTguIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIpOworICAgICAgICAvLyBGSVhNRTogQ29uc29s
ZSBtZXNzYWdlIHdvdWxkIGJlIGJldHRlciB3aXRoIGEgc291cmNlIGNvZGUgbG9jYXRpb247IHdo
ZXJlIHdvdWxkIHdlIGdldCB0aGF0PworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gQ09OTkVDVElORyk7CiAgICAgQVNTRVJUKG1fcmVxdWVzdEluRmxp
Z2h0KTsKIAotICAgIG1fZXZlbnRTdHJlYW1PcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHJlc3BvbnNlLnVybCgpKS0+dG9TdHJpbmcoKTsKLSAgICBpbnQgc3RhdHVzQ29kZSA9IHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgYm9vbCBtaW1lVHlwZUlzVmFsaWQgPSByZXNwb25z
ZS5taW1lVHlwZSgpID09ICJ0ZXh0L2V2ZW50LXN0cmVhbSI7Ci0gICAgYm9vbCByZXNwb25zZUlz
VmFsaWQgPSBzdGF0dXNDb2RlID09IDIwMCAmJiBtaW1lVHlwZUlzVmFsaWQ7Ci0gICAgaWYgKHJl
c3BvbnNlSXNWYWxpZCkgewotICAgICAgICBjb25zdCBTdHJpbmcmIGNoYXJzZXQgPSByZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgICAgIC8vIElmIHdlIGhhdmUgYSBjaGFyc2V0LCB0
aGUgb25seSBhbGxvd2VkIHZhbHVlIGlzIFVURi04IChjYXNlLWluc2Vuc2l0aXZlKS4KLSAgICAg
ICAgcmVzcG9uc2VJc1ZhbGlkID0gY2hhcnNldC5pc0VtcHR5KCkgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY2hhcnNldCwgInV0Zi04Iik7Ci0gICAgICAgIGlmICghcmVzcG9uc2VJ
c1ZhbGlkKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50
U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgY2hhcnNldCAoXCIiLCBjaGFyc2V0LCAiXCIpIHRoYXQg
aXMgbm90IFVURi04LiBBYm9ydGluZyB0aGUgY29ubmVjdGlvbi4iKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSBhcmUgbWlzc2luZyB0aGUgc291cmNlIGxpbmUuCi0gICAgICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8vIFRvIGtlZXAgdGhlIHNpZ25hbC10by1ub2lzZSByYXRpbyBsb3csIHdlIG9u
bHkgbG9nIDIwMC1yZXNwb25zZSB3aXRoIGFuIGludmFsaWQgTUlNRSB0eXBlLgotICAgICAgICBp
ZiAoc3RhdHVzQ29kZSA9PSAyMDAgJiYgIW1pbWVUeXBlSXNWYWxpZCkgewotICAgICAgICAgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBh
IE1JTUUgdHlwZSAoXCIiLCByZXNwb25zZS5taW1lVHlwZSgpLCAiXCIpIHRoYXQgaXMgbm90IFwi
dGV4dC9ldmVudC1zdHJlYW1cIi4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uIik7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogV2UgYXJlIG1pc3NpbmcgdGhlIHNvdXJjZSBsaW5lLgotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAocmVzcG9uc2VJc1ZhbGlkKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBPUEVOOwot
ICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVu
dCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIXJlc3BvbnNlSXNWYWxp
ZChyZXNwb25zZSkpIHsKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9ldmVudFN0cmVhbU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzcG9uc2UudXJsKCkpLT50b1N0cmluZygpOwor
ICAgIG1fc3RhdGUgPSBPUEVOOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBFdmVudFNvdXJj
ZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTI0MCw4
ICsyMTUsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VS
VChtX3JlcXVlc3RJbkZsaWdodCk7CiAKLSAgICAvLyBGSVhNRTogTmVlZCB0byBjYWxsIGZsdXNo
IGF0IHNvbWUgcG9pbnQuCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZiwgU3RyaW5nVmlldyhtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZl
ciwgbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CiAgICAgcGFyc2VFdmVudFN0cmVh
bSgpOwogfQogCkBAIC0yNTAsMTUgKzIyNCwxNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBP
UEVOKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0SW5GbGlnaHQpOwogCi0gICAgaWYgKG1fcmVjZWl2
ZUJ1Zi5zaXplKCkgPiAwIHx8IG1fZGF0YS5zaXplKCkgPiAwKSB7Ci0gICAgICAgIHBhcnNlRXZl
bnRTdHJlYW0oKTsKKyAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmZsdXNo
KCkpOworICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKKworICAgIC8vIERpc2NhcmQgZXZlcnl0aGlu
ZyB0aGF0IGhhcyBub3QgYmVlbiBkaXNwYXRjaGVkIGJ5IG5vdy4KKyAgICAvLyBGSVhNRTogV2h5
IGRvZXMgdGhpcyBuZWVkIHRvIGJlIGRvbmU/CisgICAgLy8gSWYgdGhpcyBpcyBpbXBvcnRhbnQs
IHdoeSBpc24ndCBpdCBpbXBvcnRhbnQgdG8gY2xlYXIgb3RoZXIgZGF0YSBtZW1iZXJzOiBtX2Rl
Y29kZXIsIG1fbGFzdEV2ZW50SWQsIG1fbG9hZGVyPworICAgIG1fcmVjZWl2ZUJ1ZmZlci5jbGVh
cigpOworICAgIG1fZGF0YS5jbGVhcigpOworICAgIG1fZXZlbnROYW1lID0geyB9OworICAgIG1f
Y3VycmVudGx5UGFyc2VkRXZlbnRJZCA9IHsgfTsKIAotICAgICAgICAvLyBEaXNjYXJkIGV2ZXJ5
dGhpbmcgdGhhdCBoYXMgbm90IGJlZW4gZGlzcGF0Y2hlZCBieSBub3cuCi0gICAgICAgIG1fcmVj
ZWl2ZUJ1Zi5jbGVhcigpOwotICAgICAgICBtX2RhdGEuY2xlYXIoKTsKLSAgICAgICAgbV9ldmVu
dE5hbWUgPSAiIjsKLSAgICAgICAgbV9jdXJyZW50bHlQYXJzZWRFdmVudElkID0gU3RyaW5nKCk7
Ci0gICAgfQogICAgIG5ldHdvcmtSZXF1ZXN0RW5kZWQoKTsKIH0KIApAQCAtMjY5LDYgKzI0NSw5
IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAKICAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgbV9zdGF0ZSA9IENM
T1NFRDsKKworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgbmVlZCB0byBjbGVhciBkYXRhIG1l
bWJlcnMgaGVyZSBhcyBpbiBkaWRGaW5pc2hMb2FkaW5nPworCiAgICAgbmV0d29ya1JlcXVlc3RF
bmRlZCgpOwogfQogCkBAIC0zMDIsMzcgKzI4MSwzNyBAQCB2b2lkIEV2ZW50U291cmNlOjphYm9y
dENvbm5lY3Rpb25BdHRlbXB0KCkKIAogdm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVh
bSgpCiB7Ci0gICAgdW5zaWduZWQgaW50IGJ1ZlBvcyA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGJ1
ZlNpemUgPSBtX3JlY2VpdmVCdWYuc2l6ZSgpOwotICAgIHdoaWxlIChidWZQb3MgPCBidWZTaXpl
KSB7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHVuc2lnbmVkIHNpemUgPSBtX3Jl
Y2VpdmVCdWZmZXIuc2l6ZSgpOworICAgIHdoaWxlIChwb3NpdGlvbiA8IHNpemUpIHsKICAgICAg
ICAgaWYgKG1fZGlzY2FyZFRyYWlsaW5nTmV3bGluZSkgewotICAgICAgICAgICAgaWYgKG1fcmVj
ZWl2ZUJ1ZltidWZQb3NdID09ICdcbicpCi0gICAgICAgICAgICAgICAgYnVmUG9zKys7CisgICAg
ICAgICAgICBpZiAobV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9uXSA9PSAnXG4nKQorICAgICAgICAg
ICAgICAgIHBvc2l0aW9uKys7CiAgICAgICAgICAgICBtX2Rpc2NhcmRUcmFpbGluZ05ld2xpbmUg
PSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGludCBsaW5lTGVuZ3RoID0gLTE7Ci0gICAg
ICAgIGludCBmaWVsZExlbmd0aCA9IC0xOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
YnVmUG9zOyBsaW5lTGVuZ3RoIDwgMCAmJiBpIDwgYnVmU2l6ZTsgaSsrKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKG1fcmVjZWl2ZUJ1ZltpXSkgeworICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bGluZUxlbmd0aDsKKyAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3NpdGlvbjsgIWxpbmVMZW5ndGggJiYgaSA8IHNpemU7
IGkrKykgeworICAgICAgICAgICAgc3dpdGNoIChtX3JlY2VpdmVCdWZmZXJbaV0pIHsKICAgICAg
ICAgICAgIGNhc2UgJzonOgotICAgICAgICAgICAgICAgIGlmIChmaWVsZExlbmd0aCA8IDApCi0g
ICAgICAgICAgICAgICAgICAgIGZpZWxkTGVuZ3RoID0gaSAtIGJ1ZlBvczsKKyAgICAgICAgICAg
ICAgICBpZiAoIWZpZWxkTGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBmaWVsZExlbmd0aCA9
IGkgLSBwb3NpdGlvbjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
J1xyJzoKICAgICAgICAgICAgICAgICBtX2Rpc2NhcmRUcmFpbGluZ05ld2xpbmUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICAgICAgY2FzZSAnXG4nOgotICAg
ICAgICAgICAgICAgIGxpbmVMZW5ndGggPSBpIC0gYnVmUG9zOworICAgICAgICAgICAgICAgIGxp
bmVMZW5ndGggPSBpIC0gcG9zaXRpb247CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobGluZUxlbmd0aCA8IDApCisgICAgICAg
IGlmICghbGluZUxlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHBhcnNlRXZl
bnRTdHJlYW1MaW5lKGJ1ZlBvcywgZmllbGRMZW5ndGgsIGxpbmVMZW5ndGgpOwotICAgICAgICBi
dWZQb3MgKz0gbGluZUxlbmd0aCArIDE7CisgICAgICAgIHBhcnNlRXZlbnRTdHJlYW1MaW5lKHBv
c2l0aW9uLCBmaWVsZExlbmd0aCwgbGluZUxlbmd0aC52YWx1ZSgpKTsKKyAgICAgICAgcG9zaXRp
b24gKz0gbGluZUxlbmd0aC52YWx1ZSgpICsgMTsKIAogICAgICAgICAvLyBFdmVudFNvdXJjZS5j
bG9zZSgpIG1pZ2h0J3ZlIGJlZW4gY2FsbGVkIGJ5IG9uZSBvZiB0aGUgbWVzc2FnZSBldmVudCBo
YW5kbGVycy4KICAgICAgICAgLy8gUGVyIHNwZWMsIG5vIGZ1cnRoZXIgbWVzc2FnZXMgc2hvdWxk
IGJlIGZpcmVkIGFmdGVyIHRoYXQuCkBAIC0zNDAsNTcgKzMxOSw1NSBAQCB2b2lkIEV2ZW50U291
cmNlOjpwYXJzZUV2ZW50U3RyZWFtKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGlmIChidWZQb3MgPT0gYnVmU2l6ZSkKLSAgICAgICAgbV9yZWNlaXZlQnVmLmNsZWFyKCk7Ci0g
ICAgZWxzZSBpZiAoYnVmUG9zKQotICAgICAgICBtX3JlY2VpdmVCdWYucmVtb3ZlKDAsIGJ1ZlBv
cyk7CisgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uIG1ha2VzIGl0IGNsZWFy
IHRoYXQgbV9yZWNlaXZlQnVmZmVyIHNob3VsZCBiZSBzb21lIG90aGVyIHR5cGUsCisgICAgLy8g
cGVyaGFwcyBhIERlcXVlIG9yIGEgY2lyY3VsYXIgYnVmZmVyIG9mIHNvbWUgc29ydC4KKyAgICBp
ZiAocG9zaXRpb24gPT0gc2l6ZSkKKyAgICAgICAgbV9yZWNlaXZlQnVmZmVyLmNsZWFyKCk7Cisg
ICAgZWxzZSBpZiAocG9zaXRpb24pCisgICAgICAgIG1fcmVjZWl2ZUJ1ZmZlci5yZW1vdmUoMCwg
cG9zaXRpb24pOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSh1
bnNpZ25lZCBidWZQb3MsIGludCBmaWVsZExlbmd0aCwgaW50IGxpbmVMZW5ndGgpCit2b2lkIEV2
ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9u
YWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNpZ25lZCBsaW5lTGVuZ3RoKQogewogICAgIGlm
ICghbGluZUxlbmd0aCkgewotICAgICAgICBpZiAoIW1fZGF0YS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIG1fZGF0YS5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBpZiAoIW1fY3VycmVudGx5
UGFyc2VkRXZlbnRJZC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIG1fbGFzdEV2ZW50SWQu
c3dhcChtX2N1cnJlbnRseVBhcnNlZEV2ZW50SWQpOwotICAgICAgICAgICAgICAgIG1fY3VycmVu
dGx5UGFyc2VkRXZlbnRJZCA9IFN0cmluZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChjcmVhdGVNZXNzYWdlRXZlbnQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFtX2V2ZW50TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2V2ZW50TmFtZSA9ICIi
OwotICAgIH0gZWxzZSBpZiAoZmllbGRMZW5ndGgpIHsKLSAgICAgICAgYm9vbCBub1ZhbHVlID0g
ZmllbGRMZW5ndGggPCAwOwotCi0gICAgICAgIFN0cmluZyBmaWVsZCgmbV9yZWNlaXZlQnVmW2J1
ZlBvc10sIG5vVmFsdWUgPyBsaW5lTGVuZ3RoIDogZmllbGRMZW5ndGgpOwotICAgICAgICBpbnQg
c3RlcDsKLSAgICAgICAgaWYgKG5vVmFsdWUpCi0gICAgICAgICAgICBzdGVwID0gbGluZUxlbmd0
aDsKLSAgICAgICAgZWxzZSBpZiAobV9yZWNlaXZlQnVmW2J1ZlBvcyArIGZpZWxkTGVuZ3RoICsg
MV0gIT0gJyAnKQotICAgICAgICAgICAgc3RlcCA9IGZpZWxkTGVuZ3RoICsgMTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc3RlcCA9IGZpZWxkTGVuZ3RoICsgMjsKLSAgICAgICAgYnVmUG9z
ICs9IHN0ZXA7Ci0gICAgICAgIGludCB2YWx1ZUxlbmd0aCA9IGxpbmVMZW5ndGggLSBzdGVwOwot
Ci0gICAgICAgIGlmIChmaWVsZCA9PSAiZGF0YSIpIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZUxl
bmd0aCkKLSAgICAgICAgICAgICAgICBtX2RhdGEuYXBwZW5kKCZtX3JlY2VpdmVCdWZbYnVmUG9z
XSwgdmFsdWVMZW5ndGgpOwotICAgICAgICAgICAgbV9kYXRhLmFwcGVuZCgnXG4nKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChmaWVsZCA9PSAiZXZlbnQiKQotICAgICAgICAgICAgbV9ldmVudE5hbWUg
PSB2YWx1ZUxlbmd0aCA/IFN0cmluZygmbV9yZWNlaXZlQnVmW2J1ZlBvc10sIHZhbHVlTGVuZ3Ro
KSA6ICIiOwotICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSAiaWQiKQotICAgICAgICAgICAgbV9j
dXJyZW50bHlQYXJzZWRFdmVudElkID0gdmFsdWVMZW5ndGggPyBTdHJpbmcoJm1fcmVjZWl2ZUJ1
ZltidWZQb3NdLCB2YWx1ZUxlbmd0aCkgOiAiIjsKLSAgICAgICAgZWxzZSBpZiAoZmllbGQgPT0g
InJldHJ5IikgewotICAgICAgICAgICAgaWYgKCF2YWx1ZUxlbmd0aCkKLSAgICAgICAgICAgICAg
ICBtX3JlY29ubmVjdERlbGF5ID0gZGVmYXVsdFJlY29ubmVjdERlbGF5OwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlKCZtX3JlY2VpdmVCdWZbYnVmUG9z
XSwgdmFsdWVMZW5ndGgpOwotICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIHJldHJ5ID0gdmFsdWUudG9VSW50NjQoJm9rKTsKLSAgICAg
ICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgICAgIG1fcmVjb25uZWN0RGVsYXkg
PSByZXRyeTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2RhdGEuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKTsKKyAgICAgICAgbV9ldmVudE5hbWUg
PSB7IH07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZmllbGRMZW5ndGggJiYg
IWZpZWxkTGVuZ3RoLnZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZ1ZpZXcg
ZmllbGQgeyAmbV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9uXSwgZmllbGRMZW5ndGggPyBmaWVsZExl
bmd0aC52YWx1ZSgpIDogbGluZUxlbmd0aCB9OworCisgICAgdW5zaWduZWQgc3RlcDsKKyAgICBp
ZiAoIWZpZWxkTGVuZ3RoKQorICAgICAgICBzdGVwID0gbGluZUxlbmd0aDsKKyAgICBlbHNlIGlm
IChtX3JlY2VpdmVCdWZmZXJbcG9zaXRpb24gKyBmaWVsZExlbmd0aC52YWx1ZSgpICsgMV0gIT0g
JyAnKQorICAgICAgICBzdGVwID0gZmllbGRMZW5ndGgudmFsdWUoKSArIDE7CisgICAgZWxzZQor
ICAgICAgICBzdGVwID0gZmllbGRMZW5ndGgudmFsdWUoKSArIDI7CisgICAgcG9zaXRpb24gKz0g
c3RlcDsKKyAgICB1bnNpZ25lZCB2YWx1ZUxlbmd0aCA9IGxpbmVMZW5ndGggLSBzdGVwOworCisg
ICAgaWYgKGZpZWxkID09ICJkYXRhIikgeworICAgICAgICBtX2RhdGEuYXBwZW5kKCZtX3JlY2Vp
dmVCdWZmZXJbcG9zaXRpb25dLCB2YWx1ZUxlbmd0aCk7CisgICAgICAgIG1fZGF0YS5hcHBlbmQo
J1xuJyk7CisgICAgfSBlbHNlIGlmIChmaWVsZCA9PSAiZXZlbnQiKQorICAgICAgICBtX2V2ZW50
TmFtZSA9IHsgJm1fcmVjZWl2ZUJ1ZmZlcltwb3NpdGlvbl0sIHZhbHVlTGVuZ3RoIH07CisgICAg
ZWxzZSBpZiAoZmllbGQgPT0gImlkIikKKyAgICAgICAgbV9jdXJyZW50bHlQYXJzZWRFdmVudElk
ID0geyAmbV9yZWNlaXZlQnVmZmVyW3Bvc2l0aW9uXSwgdmFsdWVMZW5ndGggfTsKKyAgICBlbHNl
IGlmIChmaWVsZCA9PSAicmV0cnkiKSB7CisgICAgICAgIGlmICghdmFsdWVMZW5ndGgpCisgICAg
ICAgICAgICBtX3JlY29ubmVjdERlbGF5ID0gZGVmYXVsdFJlY29ubmVjdERlbGF5OworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgd2FudCB0byBpZ25v
cmUgdHJhaWxpbmcgZ2FyYmFnZSBoZXJlPyBTaG91bGQgd2UgYmUgdXNpbmcgdGhlIHN0cmljdCB2
ZXJzaW9uIGluc3RlYWQ/CisgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgY2FuJ3QgcGFyc2Ug
dGhlIHZhbHVlLCBzaG91bGQgd2UgbGVhdmUgbV9yZWNvbm5lY3REZWxheSBhbG9uZSBvciBzZXQg
aXQgdG8gZGVmYXVsdFJlY29ubmVjdERlbGF5PworICAgICAgICAgICAgYm9vbCBvazsKKyAgICAg
ICAgICAgIGF1dG8gcmVjb25uZWN0RGVsYXkgPSBjaGFyYWN0ZXJzVG9VSW50NjQoJm1fcmVjZWl2
ZUJ1ZmZlcltwb3NpdGlvbl0sIHZhbHVlTGVuZ3RoLCAmb2spOworICAgICAgICAgICAgaWYgKG9r
KQorICAgICAgICAgICAgICAgIG1fcmVjb25uZWN0RGVsYXkgPSByZWNvbm5lY3REZWxheTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTQwNywxMyArMzg0LDI0IEBAIGNvbnN0IGNoYXIqIEV2ZW50
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIAogYm9vbCBFdmVudFNvdXJjZTo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCB0cnkgYW5kIGRvIGJldHRlciBoZXJlLgorICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcmV0dXJuIHRydWUgaGVyZSB3aGVuIHdlIGNhbiBiZWNhdXNlIHRoaXMgb2JqZWN0IGlzIG5v
dCBhY3R1YWxseSBjdXJyZW50bHkgYWN0aXZlLgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVm
PE1lc3NhZ2VFdmVudD4gRXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCgpCit2b2lkIEV2
ZW50U291cmNlOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCgpCiB7Ci0gICAgcmV0dXJuIE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKG1fZXZlbnROYW1lLmlzRW1wdHkoKSA/IGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQgOiBBdG9taWNTdHJpbmcobV9ldmVudE5hbWUpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShTdHJpbmc6OmFkb3B0KG1fZGF0YSkpLCBtX2V2ZW50U3RyZWFtT3JpZ2luLCBtX2xh
c3RFdmVudElkKTsKKyAgICBpZiAoIW1fY3VycmVudGx5UGFyc2VkRXZlbnRJZC5pc051bGwoKSkK
KyAgICAgICAgbV9sYXN0RXZlbnRJZCA9IFdURk1vdmUobV9jdXJyZW50bHlQYXJzZWRFdmVudElk
KTsKKworICAgIGF1dG8mIG5hbWUgPSBtX2V2ZW50TmFtZS5pc0VtcHR5KCkgPyBldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50IDogbV9ldmVudE5hbWU7CisKKyAgICAvLyBPbWl0IHRoZSB0cmFpbGlu
ZyAiXG4iIGNoYXJhY3Rlci4KKyAgICBBU1NFUlQoIW1fZGF0YS5pc0VtcHR5KCkpOworICAgIHVu
c2lnbmVkIHNpemUgPSBtX2RhdGEuc2l6ZSgpIC0gMTsKKyAgICBhdXRvIGRhdGEgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmdWaWV3IHsgbV9kYXRhLmRhdGEoKSwgc2l6ZSB9
KTsKKyAgICBtX2RhdGEgPSB7IH07CisKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKG5hbWUsIFdURk1vdmUoZGF0YSksIG1fZXZlbnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2
ZW50SWQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5oCmluZGV4IDRjMWUyMjQwNDY4NGUxNjc3MDAyZGJiYjBkZmU1ZjM1ZGEzZWJiYzkuLmFj
NDIxOTFjNzJmYmIyMTk5ZWRkNjRiN2ExMjRiMjc4YjdmZjU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmgKQEAgLTI5LDM0ICsyOSwzMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIEV2ZW50U291cmNlX2gKLSNkZWZpbmUgRXZlbnRTb3VyY2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGljdGlvbmFyeTsK
IGNsYXNzIE1lc3NhZ2VFdmVudDsKLWNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIAogY2xhc3MgRXZlbnRT
b3VyY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudFNvdXJjZT4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8RXZlbnRTb3VyY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRp
b25Db2RlJik7CisgICAgc3RydWN0IEluaXQgeworICAgICAgICBib29sIHdpdGhDcmVkZW50aWFs
czsKKyAgICB9OworICAgIHN0YXRpYyBSZWZQdHI8RXZlbnRTb3VyY2U+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEluaXQmLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCB+RXZlbnRTb3VyY2UoKTsKIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFJlY29ubmVjdERlbGF5OwotCi0gICAgU3RyaW5n
IHVybCgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Q7CiAgICAgYm9vbCB3
aXRoQ3JlZGVudGlhbHMoKSBjb25zdDsKIAogICAgIHR5cGVkZWYgc2hvcnQgU3RhdGU7CkBAIC02
OCwyOSArNjUsMjggQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxFdmVudFNvdXJjZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50
U291cmNlPjo6ZGVyZWY7Ci0KLSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEV2ZW50U291cmNlRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgotICAgIEV2ZW50U291cmNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmLCBjb25zdCBEaWN0aW9uYXJ5Jik7Cisg
ICAgRXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0
IEluaXQmKTsKKworICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gRXZlbnRTb3VyY2VFdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7IH0KIAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigp
OyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Cisg
ICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCkgZmluYWw7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkgZmluYWw7
CisgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lk
IGRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSBmaW5hbDsKIAotICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBBUEkuCi0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgp
IGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKIAogICAgIHZvaWQgY29ubmVjdCgpOwogICAgIHZvaWQgbmV0d29ya1JlcXVlc3RFbmRlZCgp
OwpAQCAtOTgsMjggKzk0LDQ1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVJlY29ubmVj
dCgpOwogICAgIHZvaWQgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwogICAgIHZvaWQgcGFyc2VF
dmVudFN0cmVhbSgpOwotICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9z
LCBpbnQgZmllbGRMZW5ndGgsIGludCBsaW5lTGVuZ3RoKTsKLSAgICBSZWY8TWVzc2FnZUV2ZW50
PiBjcmVhdGVNZXNzYWdlRXZlbnQoKTsKKyAgICB2b2lkIHBhcnNlRXZlbnRTdHJlYW1MaW5lKHVu
c2lnbmVkIHBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVk
IGxpbmVMZW5ndGgpOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKTsKKworICAgIGJv
b2wgcmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKworICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0UmVjb25uZWN0RGVsYXk7CiAKICAgICBVUkwg
bV91cmw7CiAgICAgYm9vbCBtX3dpdGhDcmVkZW50aWFsczsKLSAgICBTdGF0ZSBtX3N0YXRlOwor
ICAgIFN0YXRlIG1fc3RhdGUgeyBDT05ORUNUSU5HIH07CiAKLSAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogICAgIFRpbWVy
IG1fY29ubmVjdFRpbWVyOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9yZWNlaXZlQnVmOwotICAgIGJv
b2wgbV9kaXNjYXJkVHJhaWxpbmdOZXdsaW5lOwotICAgIGJvb2wgbV9yZXF1ZXN0SW5GbGlnaHQ7
CisgICAgVmVjdG9yPFVDaGFyPiBtX3JlY2VpdmVCdWZmZXI7CisgICAgYm9vbCBtX2Rpc2NhcmRU
cmFpbGluZ05ld2xpbmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXF1ZXN0SW5GbGlnaHQgeyBm
YWxzZSB9OwogCi0gICAgU3RyaW5nIG1fZXZlbnROYW1lOworICAgIEF0b21pY1N0cmluZyBtX2V2
ZW50TmFtZTsKICAgICBWZWN0b3I8VUNoYXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9jdXJyZW50
bHlQYXJzZWRFdmVudElkOwogICAgIFN0cmluZyBtX2xhc3RFdmVudElkOwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBtX3JlY29ubmVjdERlbGF5OworICAgIHVpbnQ2NF90IG1fcmVjb25uZWN0RGVs
YXkgeyBkZWZhdWx0UmVjb25uZWN0RGVsYXkgfTsKICAgICBTdHJpbmcgbV9ldmVudFN0cmVhbU9y
aWdpbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK2lubGluZSBjb25zdCBTdHJpbmcm
IEV2ZW50U291cmNlOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5zdHJpbmcoKTsK
K30KKworaW5saW5lIGJvb2wgRXZlbnRTb3VyY2U6OndpdGhDcmVkZW50aWFscygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2l0aENyZWRlbnRpYWxzOworfQogCi0jZW5kaWYgLy8gRXZlbnRTb3Vy
Y2VfaAoraW5saW5lIEV2ZW50U291cmNlOjpTdGF0ZSBFdmVudFNvdXJjZTo6cmVhZHlTdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaWRsIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwKaW5kZXggYjA2OWFhODI2M2NmMmQ2ZmQ2
YTFlMThmMGI1ZWNhNjM3YTEyMGYwYi4uODBiODZkY2M1NTI5MjI0MjI5ZWY1OTk4YzFkZWYxMmZi
ZDhkNjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwKQEAgLTMyLDExICszMiwx
MCBAQAogWwogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEFjdGl2ZURPTU9iamVj
dCwKLSAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdXJsLCBvcHRpb25hbCBEaWN0aW9uYXJ5IGV2
ZW50U291cmNlSW5pdCksCisgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwg
RXZlbnRTb3VyY2VJbml0IGV2ZW50U291cmNlSW5pdERpY3QpLAogICAgIENvbnN0cnVjdG9yQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2Vw
dGlvbiwKIF0gaW50ZXJmYWNlIEV2ZW50U291cmNlIDogRXZlbnRUYXJnZXQgewotCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBVUkw7IC8vIExvd2VyY2FzZWQgLnVybCBpcyB0aGUg
b25lIGluIHRoZSBzcGVjLCBidXQgbGVhdmluZyAuVVJMIGZvciBjb21wYXRpYmlsaXR5IHJlYXNv
bnMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmw7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gd2l0aENyZWRlbnRpYWxzOwpAQCAtNTMsMyArNTIsNyBAQAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJvcjsKICAgICB2b2lkIGNsb3NlKCk7CiB9Owor
CitkaWN0aW9uYXJ5IEV2ZW50U291cmNlSW5pdCB7CisgICAgYm9vbGVhbiB3aXRoQ3JlZGVudGlh
bHMgPSBmYWxzZTsKK307Cg==
</data>
<flag name="review"
          id="302468"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>