<?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>86591</bug_id>
          
          <creation_ts>2012-05-16 01:00:22 -0700</creation_ts>
          <short_desc>[Refactoring] Move platform-specific code in Editor::respondToChangedSelection to the WebKit layer</short_desc>
          <delta_ts>2012-05-17 11:44:03 -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>HTML Editing</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>japhet</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>625103</commentid>
    <comment_count>0</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-05-16 01:00:22 -0700</bug_when>
    <thetext>Greetings,

Unfortunately, Editor::respondToChangedSelection() has platform-specific code that is hard to understand it as listed below. We should move this code to the WebKit layer for better readability.

  #if (!PLATFORM(MAC) &amp;&amp; !PLATFORM(CHROMIUM)) || (PLATFORM(MAC) &amp;&amp; (defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)))
  #if PLATFORM(CHROMIUM)
          if (!m_frame-&gt;settings() || !m_frame-&gt;settings()-&gt;asynchronousSpellCheckingEnabled()) {
              if (RefPtr&lt;Range&gt; wordRange = newAdjacentWords.toNormalizedRange())
                  m_frame-&gt;document()-&gt;markers()-&gt;removeMarkers(wordRange.get(), DocumentMarker::Spelling);
          }
  #else
          // This only erases markers that are in the first unit (word or sentence) of the selection.
          // Perhaps peculiar, but it matches AppKit on these Mac OS X versions.
          if (RefPtr&lt;Range&gt; wordRange = newAdjacentWords.toNormalizedRange())
              m_frame-&gt;document()-&gt;markers()-&gt;removeMarkers(wordRange.get(), DocumentMarker::Spelling);
  #endif
  #endif

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625117</commentid>
    <comment_count>1</comment_count>
      <attachid>142188</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-05-16 01:27:55 -0700</bug_when>
    <thetext>Created attachment 142188
The proposed solution 1

Greetings,

I have written a change that adds a virtual function TextCheckerClient::shouldEraseMarkersAfterChangeSelection to remove these #if,..,#endif blocks. I would like to set r? to try this change on EWS bots to check if they can compile this change. (I have verified I can compile this change on Chromium, Mac, Win, and Qt, though.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626263</commentid>
    <comment_count>2</comment_count>
      <attachid>142413</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-05-16 22:23:56 -0700</bug_when>
    <thetext>Created attachment 142413
The proposed solution 2 (copied a comment)

Greetings Niwa-san,

Thanks for your review. I would like to update this change to add a simplified version of the comment in Editor::respondToChangedSelection() to WebKit/mac and WebKit2. Is it OK to land this change when EWS bots compile it?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626286</commentid>
    <comment_count>3</comment_count>
      <attachid>142413</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-16 23:16:40 -0700</bug_when>
    <thetext>Comment on attachment 142413
The proposed solution 2 (copied a comment)

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

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:704
&gt; +    // This prevents erasing spelling markers on OS X Lion or later to match AppKit on these Mac OS X versions.
&gt; +#if !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD)
&gt; +    return type != TextCheckingTypeSpelling;
&gt; +#else
&gt; +    return true;
&gt; +#endif

On my second thought, it&apos;s not great that this code is duplicated in WebKit and WebKit2. Is there any way to share this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626289</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-16 23:17:39 -0700</bug_when>
    <thetext>+ap, +darin, +enrica for they might know ways to share code between WebKit/mac and WebKit2/mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626721</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-17 11:01:17 -0700</bug_when>
    <thetext>I don&apos;t think that there is a great way to do this. Generally, pushing down to WebCore works best, however is seems appropriate to have policy decisions like this implemented in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626728</commentid>
    <comment_count>6</comment_count>
      <attachid>142413</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-17 11:07:43 -0700</bug_when>
    <thetext>Comment on attachment 142413
The proposed solution 2 (copied a comment)

(In reply to comment #5)
&gt; I don&apos;t think that there is a great way to do this. Generally, pushing down to WebCore works best, however is seems appropriate to have policy decisions like this implemented in WebKit.

Okay. I guess we&apos;ll have to duplicate the code then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626782</commentid>
    <comment_count>7</comment_count>
      <attachid>142413</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 11:43:55 -0700</bug_when>
    <thetext>Comment on attachment 142413
The proposed solution 2 (copied a comment)

Clearing flags on attachment: 142413

Committed r117470: &lt;http://trac.webkit.org/changeset/117470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626783</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 11:44:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142188</attachid>
            <date>2012-05-16 01:27:55 -0700</date>
            <delta_ts>2012-05-16 22:23:56 -0700</delta_ts>
            <desc>The proposed solution 1</desc>
            <filename>issue86591-patch0.txt</filename>
            <type>text/plain</type>
            <size>29081</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzIzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTE2ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gTW92
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbiB0byB0aGUgV2ViS2l0IGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBUZXh0Q2hlY2tlckNsaWVudDo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24gdG8g
cmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZnJvbSBFZGl0b3I6OnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4
dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisgICAgICAgIChU
ZXh0Q2hlY2tlckNsaWVudCk6CisKIDIwMTItMDUtMTYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MTcwNTAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMTcyMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5NTIsMjEgKzI5NTIsMTQgQEAgdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oYwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiAoZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkpKQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAg
ICAgICBpZiAoIW1fZnJhbWUtPnNldHRpbmdzKCkgfHwgIW1fZnJhbWUtPnNldHRpbmdzKCktPmFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCF0ZXh0Q2hl
Y2tlcigpIHx8IHRleHRDaGVja2VyKCktPnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2Vs
ZWN0aW9uKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZykpIHsKICAgICAgICAgICAgIGlmIChSZWZQ
dHI8UmFuZ2U+IHdvcmRSYW5nZSA9IG5ld0FkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2Uo
KSkKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPnJlbW92
ZU1hcmtlcnMod29yZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogICAg
ICAgICB9Ci0jZWxzZQotICAgICAgICAvLyBUaGlzIG9ubHkgZXJhc2VzIG1hcmtlcnMgdGhhdCBh
cmUgaW4gdGhlIGZpcnN0IHVuaXQgKHdvcmQgb3Igc2VudGVuY2UpIG9mIHRoZSBzZWxlY3Rpb24u
Ci0gICAgICAgIC8vIFBlcmhhcHMgcGVjdWxpYXIsIGJ1dCBpdCBtYXRjaGVzIEFwcEtpdCBvbiB0
aGVzZSBNYWMgT1MgWCB2ZXJzaW9ucy4KLSAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4gd29yZFJh
bmdlID0gbmV3QWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpKQotICAgICAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKHdvcmRSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAg
IGlmIChSZWZQdHI8UmFuZ2U+IHNlbnRlbmNlUmFuZ2UgPSBuZXdTZWxlY3RlZFNlbnRlbmNlLnRv
Tm9ybWFsaXplZFJhbmdlKCkpCi0gICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJr
ZXJzKCktPnJlbW92ZU1hcmtlcnMoc2VudGVuY2VSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIpOworICAgICAgICBpZiAoIXRleHRDaGVja2VyKCkgfHwgdGV4dENoZWNrZXIoKS0+
c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIpKSB7CisgICAgICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBzZW50ZW5jZVJhbmdlID0g
bmV3U2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpKQorICAgICAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhzZW50ZW5jZVJh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICAvLyBXaGVuIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcgaXMgb2ZmLCBleGlzdGluZyBt
YXJrZXJzIGRpc2FwcGVhciBhZnRlciB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw2ICs0
MTYsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgOiBwdWJsaWMg
VGV4dENoZWNrZXJDbGllbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFcmFz
ZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVD
aGFyKiwgaW50LCBpbnQqLCBpbnQqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgJKHJldmlzaW9uIDExNzIyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+VGV4dENoZWNrZXJDbGllbnQoKSB7fQogCisgICAgdmlydHVhbCBib29s
IHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVs
bGluZ0xlbmd0aCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MjMxKQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMDUtMTYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W1JlZmFjdG9yaW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRD
aGVja2VyQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgorICAg
ICAgICBmdW5jdGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRv
cjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgorICAgICAgICBmdW5jdGlvbi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlv
bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTItMDUtMTUgIENhaW8gTWFyY2VsbyBkZSBPbGl2
ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBGaXgg
UXQ1L01hYyBidWlsZCBhZnRlciByMTE3MjEyIGJ5IGFkZGluZyBtaXNzaW5nIE5FVFNDQVBFX1BM
VUdJTl9BUEkgZ3VhcmRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAx
MTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMTUgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnRleHRXaWxsQmVEZWxldGVkSQogICAgIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVGb3JtQ2xpZW50KCkuc2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKG1fcGFnZSwg
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLCBXS0lucHV0RmllbGRBY3Rp
b25UeXBlSW5zZXJ0RGVsZXRlLCB3ZWJGcmFtZSk7CiB9CiAKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlIHR5cGUpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgcmV0dXJuIHR5cGUgIT0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworI2Vsc2UKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aWdub3Jl
V29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHdvcmQpCiB7CiAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oklnbm9yZVdvcmQod29yZCkpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjYsNiArMTI2LDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0
Q2hlY2tlcigpICBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNw
ZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxl
YXJuV29yZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tT
cGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGlu
Z0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKSBPVkVSUklERTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MjMxKQorKysgU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisy
MDEyLTA1LTE2ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtSZWZhY3RvcmluZ10gTW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIEVkaXRvcjo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbiB0byB0aGUgV2ViS2l0IGxheWVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjU5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBUZXh0
Q2hlY2tlckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24KKyAg
ICAgICAgZnVuY3Rpb24gdG8gcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZnJvbSBFZGl0
b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAgICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkp
OgorCiAyMDEyLTA1LTE1ICBDaHJpcyBHdWFuICA8Y2hyaXMuZ3VhbkB0b3JjaG1vYmlsZS5jb20u
Y24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEVuaGFuY2UgYW4gQVBJIG9mIEJhY2tpbmdTdG9y
ZTo6ZHJhd0NvbnRlbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3Bw
CShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNCw2
ICs1MzQsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbgogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oCShy
ZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50
KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVE
ZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFy
a2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgaW50KiwgaW50Kik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MjMxKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
VGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20g
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
c3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJ
bXBsOjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgIChFZGl0
b3JDbGllbnRJbXBsKToKKwogMjAxMi0wNS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDQ1RpbWVyOjppc0FjdGl2ZSgpIGlzIGlu
Y29ycmVjdCBpbnNpZGUgdGljayBjYWxsYmFjawpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExNzIyMSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1
ZGUgIlVuZG9TdGVwLmgiCiAKQEAgLTY5NCw2ICs2OTUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjp0ZXh0RGlkQ2hhbmdlSW5UZQogewogfQogCitib29sIEVkaXRvckNsaWVudEltcGw6OnNo
b3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUgdHlw
ZSkgY29uc3QKK3sKKyAgICBjb25zdCBGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPmZvY3VzZWRX
ZWJDb3JlRnJhbWUoKTsKKyAgICByZXR1cm4gIWZyYW1lIHx8ICFmcmFtZS0+c2V0dGluZ3MoKSB8
fCAhZnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChj
b25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMTcyMjEp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkb1Rl
eHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OktleWJv
YXJkRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVs
ZChXZWJDb3JlOjpFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRl
eHRBcmVhKFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VN
YXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RG
OjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xl
bmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcyMzEpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAx
Mi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
UmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgVGV4dENo
ZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uCisgICAg
ICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20gRWRpdG9y
OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEVmbDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6
CisgICAgICAgIChFZGl0b3JDbGllbnRFZmwpOgorCiAyMDEyLTA1LTE1ICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBGdWxsc2Ny
ZWVuIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MDEsNiArNTAxLDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjp0ZXh0RGlkQ2hhbmdlSW5U
ZXgKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVkaXRvckNsaWVudEVmbDo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRFZmw6Omlnbm9y
ZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExNzIyMSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiAr
MTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4
dEZpZWxkKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFy
ZWEoRWxlbWVudCopOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVy
Q2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwg
dm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTcyMzEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25v
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3Bl
Y2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdl
YktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vy
c0FmdGVyQ2hhbmdlU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9y
bS1zcGVjaWZpYyBjb2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisg
ICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNsaWVudEd0azo6c2hvdWxkRXJhc2VN
YXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5oOgorICAgICAgICAoVGV4dENo
ZWNrZXJDbGllbnRHdGspOgorCiAyMDEyLTA1LTE0ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAg
PHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25nIGRvY3VtZW50
YXRpb24gZm9yIFdlYiBEYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24g
MTE3MjIxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMSBAQCBUZXh0Q2hlY2tl
ckNsaWVudEd0azo6flRleHRDaGVja2VyQ2xpZW50CiB7CiB9CiAKK2Jvb2wgVGV4dENoZWNrZXJD
bGllbnRHdGs6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVj
a2luZ1R5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgVGV4dENoZWNr
ZXJDbGllbnRHdGs6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogewogICAgIHdlYmtpdF9zcGVsbF9jaGVja2VyX2lnbm9yZV93b3JkKG1fc3BlbGxDaGVja2Vy
LmdldCgpLCB0ZXh0LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5oCShyZXZpc2lv
biAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tl
ckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFRleHRD
aGVja2VyQ2xpZW50R3RrIDogcHVibGljIFdlYkMKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRD
aGVja2VyQ2xpZW50R3RrKFdlYktpdFNwZWxsQ2hlY2tlciopOwogICAgICAgICB+VGV4dENoZWNr
ZXJDbGllbnRHdGsoKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0Fm
dGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBXVEY6OlN0
cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxp
bmdMZW5ndGgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MjMxKQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTItMDUtMTYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1JlZmFjdG9yaW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRl
eHRDaGVja2VyQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgor
ICAgICAgICBmdW5jdGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVk
aXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgorICAgICAgICBmdW5jdGlvbi4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJh
c2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorCiAyMDEyLTA1LTE1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVuYWNjZWxlcmF0ZWQg
c2Nyb2xsaW5nIGRlbHRhcyB3aGVuIHJ1YmJlci1iYW5kaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24g
MTE3MjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJD
b3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CiAgICAgCisgICAgdmlydHVhbCBib29sIHNob3VsZEVy
YXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3Vt
ZW50KGNvbnN0IFdURjo6U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJu
V29yZChjb25zdCBXVEY6OlN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjaGVj
a1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxs
aW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQkocmV2aXNpb24gMTE3MjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNiArNjk0LDE1IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXgKICAgICBDYWxsRm9ybURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHRleHREaWRDaGFuZ2VJblRleHRBcmVhOmluRnJhbWU6
KSwgdGV4dEFyZWFFbGVtZW50LCBraXQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpOwog
fQogCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VT
ZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSB0eXBlKSBjb25zdAoreworI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
KyAgICByZXR1cm4gdHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisjZWxzZQorICAg
IHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjppZ25vcmVX
b3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gaWdub3JlV29yZDp0ZXh0IApJbmRleDogU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDExNzIzMSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMTYgIEhpcm9ub3JpIEJvbm8g
IDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBNb3ZlIHBsYXRm
b3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uIHRv
IHRoZSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRDaGVja2VyQ2xpZW50OjpzaG91bGRFcmFz
ZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgorICAgICAgICBmdW5jdGlvbiB0byByZW1vdmUg
cGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbgorICAgICAgICBmdW5jdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnRRdDo6c2hvdWxk
RXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5oOgorICAgICAgICAo
VGV4dENoZWNrZXJDbGllbnRRdCk6CisKIDIwMTItMDUtMTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gQWRkIGluZnJhIGZv
ciB0ZXN0aW5nIGRvdWJsZS10YXAgdG8gem9vbSBmdW5jdGlvbmFsaXR5IGV0YwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xp
ZW50UXQuY3BwCShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
NywxMSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3JMaXN0KGNvbnN0IFFTCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorYm9vbCBUZXh0Q2hlY2tlckNsaWVudFF0OjpzaG91bGRFcmFzZU1h
cmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6Omlnbm9yZVdvcmRJ
blNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB3b3JkKQogewogICAgIGlmICghbG9hZFNwZWxs
Q2hlY2tlcigpKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmgJKHJldmlzaW9uIDExNzIyMSkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dENo
ZWNrZXJDbGllbnRRdCA6IHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRD
aGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVs
bGluZ0xlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcyMzEpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
VGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20g
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50KToKKwogMjAxMi0wNS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucyB0byB1c2UgSW50ZXJuYWxzIGlu
dGVyZmFjZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MjUsNiArNjI1LDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhv
ZEsKIHsKIH0KIAorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVy
Q2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50
KGNvbnN0IFN0cmluZyYgd29yZCkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4g
ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTE3MjIxKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXli
b2FyZEV2ZW50Kik7CiAgICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oV2ViQ29yZTo6
S2V5Ym9hcmRFdmVudCopOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0Fm
dGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVu
Z3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOwpJ
bmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzIzMSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTIt
MDUtMTYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Jl
ZmFjdG9yaW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRDaGVj
a2VyQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgorICAgICAg
ICBmdW5jdGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRvcjo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgorICAgICAgICBmdW5jdGlvbi4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50V2luQ0U6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0Uu
aDoKKyAgICAgICAgKEVkaXRvckNsaWVudFdpbkNFKToKKwogMjAxMi0wNS0wNCAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIERvbid0IHJlcXVpcmUgRnJhbWVM
b2FkZXJDbGllbnQgdG8gbWFudWZhY3R1cmUgYSBjb21taXREYXRhKCkgY2FsbCBmb3IgZW1wdHkg
ZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDExNzIyMSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDMsNiArNDQzLDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6
OnRleHREaWRDaGFuZ2VJblQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVkaXRv
ckNsaWVudFdpbkNFOjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0
Q2hlY2tpbmdUeXBlKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEVkaXRv
ckNsaWVudFdpbkNFOjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkocmV2aXNpb24g
MTE3MjIxKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50
Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVs
ZW1lbnQqKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5n
ZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaWdu
b3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwg
dm9pZCBsZWFybldvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBpbnQqLCBpbnQqKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTcyMzEpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTE2ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gTW92
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbiB0byB0aGUgV2ViS2l0IGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBUZXh0Q2hlY2tlckNsaWVudDo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24gdG8g
cmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZnJvbSBFZGl0b3I6OnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNs
aWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpzaG91bGRFcmFz
ZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgIChFZGl0b3JDbGll
bnRXeCk6CisKIDIwMTItMDUtMTQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gQWRkIGEgY291cGxl
IG1pc3NpbmcgaGVhZGVycy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNpb24gMTE3MjIxKQorKysgU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDk4LDYgKzQ5OCwxMSBAQCB2b2lkIEVkaXRvckNsaWVudFd4OjpyZXNwb25kVG9DaGFuZ2Vk
U2VsCiAgICAgfQogfQogCitib29sIEVkaXRvckNsaWVudFd4OjpzaG91bGRFcmFzZU1hcmtlcnNB
ZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdAoreworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIEVkaXRvckNsaWVudFd4OjppZ25vcmVXb3JkSW5TcGVsbERvY3Vt
ZW50KGNvbnN0IFN0cmluZyYpIAogeyAKICAgICBub3RJbXBsZW1lbnRlZCgpOyAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCShyZXZp
c2lvbiAxMTcyMjEpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xp
ZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50Kik7CiAgICAg
dmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hl
Y2tpbmdUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1
bWVudChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxp
bmdMZW5ndGgpOwo=
</data>
<flag name="review"
          id="148450"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142413</attachid>
            <date>2012-05-16 22:23:56 -0700</date>
            <delta_ts>2012-05-17 11:43:55 -0700</delta_ts>
            <desc>The proposed solution 2 (copied a comment)</desc>
            <filename>issue86591-patch1.txt</filename>
            <type>text/plain</type>
            <size>29260</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTE2ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gTW92
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbiB0byB0aGUgV2ViS2l0IGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBUZXh0Q2hlY2tlckNsaWVudDo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24gdG8g
cmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZnJvbSBFZGl0b3I6OnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4
dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisgICAgICAgIChU
ZXh0Q2hlY2tlckNsaWVudCk6CisKIDIwMTItMDUtMTYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBhIFNoYWRvdyBET00gc3BlYydzIHNlY3Rp
b24gNiAnRXZlbnRzJy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9u
IDExNzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjk1NiwyMSArMjk1NiwxNCBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihjCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotI2lmICFQTEFURk9STShN
QUMpIHx8IChQTEFURk9STShNQUMpICYmIChkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8
IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkpCi0jaWYgUExBVEZPUk0oQ0hST01J
VU0pCi0gICAgICAgIGlmICghbV9mcmFtZS0+c2V0dGluZ3MoKSB8fCAhbV9mcmFtZS0+c2V0dGlu
Z3MoKS0+YXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAo
IXRleHRDaGVja2VyKCkgfHwgdGV4dENoZWNrZXIoKS0+c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJD
aGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSkgewogICAgICAgICAgICAg
aWYgKFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gbmV3QWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6
ZWRSYW5nZSgpKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMo
KS0+cmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGlu
Zyk7CiAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgIC8vIFRoaXMgb25seSBlcmFzZXMgbWFya2Vy
cyB0aGF0IGFyZSBpbiB0aGUgZmlyc3QgdW5pdCAod29yZCBvciBzZW50ZW5jZSkgb2YgdGhlIHNl
bGVjdGlvbi4KLSAgICAgICAgLy8gUGVyaGFwcyBwZWN1bGlhciwgYnV0IGl0IG1hdGNoZXMgQXBw
S2l0IG9uIHRoZXNlIE1hYyBPUyBYIHZlcnNpb25zLgotICAgICAgICBpZiAoUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2UgPSBuZXdBZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkpCi0gICAg
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPnJlbW92ZU1hcmtlcnMod29y
ZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwotI2VuZGlmCi0jZW5kaWYK
LSAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4gc2VudGVuY2VSYW5nZSA9IG5ld1NlbGVjdGVkU2Vu
dGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhzZW50ZW5jZVJhbmdlLmdldCgpLCBEb2N1bWVu
dE1hcmtlcjo6R3JhbW1hcik7CisgICAgICAgIGlmICghdGV4dENoZWNrZXIoKSB8fCB0ZXh0Q2hl
Y2tlcigpLT5zaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tp
bmdUeXBlR3JhbW1hcikpIHsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHNlbnRlbmNl
UmFuZ2UgPSBuZXdTZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkpCisgICAgICAg
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKHNl
bnRlbmNlUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIC8vIFdoZW4gY29udGludW91cyBzcGVsbCBjaGVja2luZyBpcyBvZmYsIGV4
aXN0aW5nIG1hcmtlcnMgZGlzYXBwZWFyIGFmdGVyIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDExNzM3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDE2LDYgKzQxNiw3IEBAIHB1YmxpYzoKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNsaWVudCA6
IHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIHNo
b3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxE
b2N1bWVudChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNv
bnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQsIGludCosIGludCopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAkocmV2aXNpb24gMTE3Mzcx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0Q2hlY2tlckNsaWVudCgpIHt9CiAKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNr
aW5nVHlwZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQq
IG1pc3NwZWxsaW5nTGVuZ3RoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTczOTQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0
b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0
aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZy
b20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdl
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxMi0wNS0xNiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2Vk
IGJ1aWxkIGNoYW5nZSBhZnRlciBleHBvcnRlZCBzeW1ib2wKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcy
LDYgKzM3MiwxNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dFdpbGxCZURlbGV0ZWRJCiAg
ICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS5zaG91bGRQZXJmb3JtQWN0aW9u
SW5UZXh0RmllbGQobV9wYWdlLCBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dCksIFdLSW5wdXRGaWVsZEFjdGlvblR5cGVJbnNlcnREZWxldGUsIHdlYkZyYW1lKTsKIH0KIAor
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0
aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUgdHlwZSkgY29uc3QKK3sKKyAgICAvLyBUaGlz
IHByZXZlbnRzIGVyYXNpbmcgc3BlbGxpbmcgbWFya2VycyBvbiBPUyBYIExpb24gb3IgbGF0ZXIg
dG8gbWF0Y2ggQXBwS2l0IG9uIHRoZXNlIE1hYyBPUyBYIHZlcnNpb25zLgorI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIHJldHVybiB0eXBlICE9IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZzsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB3b3Jk
KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJZ25vcmVXb3Jk
KHdvcmQpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTE3MzcxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0
Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSAgT1ZFUlJJREUgeyByZXR1cm4gdGhpczsgfQog
CisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5n
dGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgT1ZF
UlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzM5
NCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMg
Y29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBs
YXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGNoYW5nZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVy
Q2hhbmdlU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAg
IGZ1bmN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRFcmFzZU1h
cmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAgIChFZGl0
b3JDbGllbnRCbGFja0JlcnJ5KToKKwogMjAxMi0wNS0xNiAgWW9uZ3hpbiBEYWkgIDx5b2RhaUBy
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBUaGUgRkNDIHNob3dzIHVwIG9uIGFuIGVt
cHR5IGlucHV0IGZpZWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3Bw
CShyZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNCw2
ICs1MzQsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbgogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oCShy
ZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50
KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVE
ZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFy
a2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgaW50KiwgaW50Kik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3Mzk0KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
VGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20g
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
c3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJ
bXBsOjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgIChFZGl0
b3JDbGllbnRJbXBsKToKKwogMjAxMi0wNS0xNiAgR3JlZyBCaWxsb2NrICA8Z2JpbGxvY2tAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBJREwgYW5kIGltcGxlbWVudGF0aW9uIGZvciBXZWIgSW50ZW50
cyBkZWxpdmVyeQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAK
QEAgLTY5NCw2ICs2OTUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp0ZXh0RGlkQ2hhbmdl
SW5UZQogewogfQogCitib29sIEVkaXRvckNsaWVudEltcGw6OnNob3VsZEVyYXNlTWFya2Vyc0Fm
dGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBj
b25zdCBGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPmZvY3VzZWRXZWJDb3JlRnJhbWUoKTsKKyAg
ICByZXR1cm4gIWZyYW1lIHx8ICFmcmFtZS0+c2V0dGluZ3MoKSB8fCAhZnJhbWUtPnNldHRpbmdz
KCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7Cit9CisKIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYg
Kzk0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9t
RXZlbnQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50
Kik7CiAgICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVs
ZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VT
ZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCog
bWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTczOTQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0xNiAgSGlyb25vcmkg
Qm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUg
cGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3Vs
ZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJl
bW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2Vk
U2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6c2hvdWxkRXJh
c2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChFZGl0b3JD
bGllbnRFZmwpOgorCiAyMDEyLTA1LTE2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFN1cHBvcnQgZm9yIEJhdHRlcnkgU3RhdHVzIEFQSSBv
biB0aGUgV2ViS2l0LUVmbApJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMTczNzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDEsNiArNTAxLDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjp0ZXh0RGlk
Q2hhbmdlSW5UZXgKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVkaXRvckNsaWVu
dEVmbDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5n
VHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRF
Zmw6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAsNiArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVs
ZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5n
ZUluVGV4dEFyZWEoRWxlbWVudCopOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFy
a2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlz
c3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTczOTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9u
byAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxh
dGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24g
dG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVy
YXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNsaWVudEd0azo6c2hv
dWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5oOgorICAgICAg
ICAoVGV4dENoZWNrZXJDbGllbnRHdGspOgorCiAyMDEyLTA1LTE0ICBUaGlhZ28gTWFyY29zIFAu
IFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIFdyb25n
IGRvY3VtZW50YXRpb24gZm9yIFdlYiBEYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gMTE3MzcxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4
dENoZWNrZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMSBAQCBU
ZXh0Q2hlY2tlckNsaWVudEd0azo6flRleHRDaGVja2VyQ2xpZW50CiB7CiB9CiAKK2Jvb2wgVGV4
dENoZWNrZXJDbGllbnRHdGs6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
KFRleHRDaGVja2luZ1R5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
VGV4dENoZWNrZXJDbGllbnRHdGs6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIHdlYmtpdF9zcGVsbF9jaGVja2VyX2lnbm9yZV93b3JkKG1fc3Bl
bGxDaGVja2VyLmdldCgpLCB0ZXh0LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEd0ay5o
CShyZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIFRleHRDaGVja2VyQ2xpZW50R3RrIDogcHVibGljIFdlYkMKICAgICBwdWJsaWM6CiAgICAg
ICAgIFRleHRDaGVja2VyQ2xpZW50R3RrKFdlYktpdFNwZWxsQ2hlY2tlciopOwogICAgICAgICB+
VGV4dENoZWNrZXJDbGllbnRHdGsoKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNl
TWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25z
dCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCog
bWlzc3BlbGxpbmdMZW5ndGgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3Mzk0
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDUtMTYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4g
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWRkcyBhIFRleHRDaGVja2VyQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNl
bGVjdGlvbgorICAgICAgICBmdW5jdGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29k
ZSBmcm9tIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbgorICAgICAgICBmdW5jdGlv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24pOgorCiAyMDEyLTA1LTE1ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHVuYWNj
ZWxlcmF0ZWQgc2Nyb2xsaW5nIGRlbHRhcyB3aGVuIHJ1YmJlci1iYW5kaW5nCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAko
cmV2aXNpb24gMTE3MzcxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoV2ViQ29yZTo6
RWxlbWVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CiAgICAgCisgICAgdmlydHVhbCBib29s
IHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGUpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5T
cGVsbERvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGxlYXJuV29yZChjb25zdCBXVEY6OlN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQq
IG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQkocmV2aXNpb24gMTE3MzcxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNiArNjk0
LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXgKICAgICBDYWxs
Rm9ybURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHRleHREaWRDaGFuZ2VJblRleHRBcmVh
OmluRnJhbWU6KSwgdGV4dEFyZWFFbGVtZW50LCBraXQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSkpOwogfQogCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0
ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSB0eXBlKSBjb25zdAoreworICAgIC8v
IFRoaXMgcHJldmVudHMgZXJhc2luZyBzcGVsbGluZyBtYXJrZXJzIG9uIE9TIFggTGlvbiBvciBs
YXRlciB0byBtYXRjaCBBcHBLaXQgb24gdGhlc2UgTWFjIE9TIFggdmVyc2lvbnMuCisjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorICAgIHJldHVybiB0eXBlICE9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyNl
bHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBpZ25vcmVXb3JkOnRleHQgCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTE3Mzk0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0xNiAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIE1v
dmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNo
b3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRv
IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENo
ZWNrZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0
OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0Lmg6Cisg
ICAgICAgIChUZXh0Q2hlY2tlckNsaWVudFF0KToKKwogMjAxMi0wNS0xNSAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQg
aW5mcmEgZm9yIHRlc3RpbmcgZG91YmxlLXRhcCB0byB6b29tIGZ1bmN0aW9uYWxpdHkgZXRjCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENo
ZWNrZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDExIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3Rvckxpc3QoY29uc3QgUVMK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIFRleHRDaGVja2VyQ2xpZW50UXQ6OnNob3Vs
ZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgVGV4dENoZWNrZXJDbGllbnRRdDo6aWdu
b3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHdvcmQpCiB7CiAgICAgaWYgKCFs
b2FkU3BlbGxDaGVja2VyKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1RleHRDaGVja2VyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaAkocmV2aXNpb24gMTE3MzcxKQorKysg
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBUZXh0Q2hlY2tlckNsaWVudFF0IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKIHB1Ymxp
YzoKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rp
b24oVGV4dENoZWNraW5nVHlwZSkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJ
blNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29y
ZChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5n
KGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQq
IG1pc3NwZWxsaW5nTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzM5
NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA1LTE2ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gTW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGlu
IEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbiB0byB0aGUgV2ViS2l0IGxheWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjU5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGFkZHMgYSBUZXh0Q2hlY2tlckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VT
ZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24gdG8gcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNv
ZGUgZnJvbSBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24KKyAgICAgICAgZnVuY3Rp
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQpOgorCiAyMDEyLTA1LTEwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zIHRvIHVzZSBJbnRl
cm5hbHMgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyNSw2ICs2MjUsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlu
cHV0TWV0aG9kSwogewogfQogCitib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJr
ZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omlnbm9yZVdvcmRJblNwZWxs
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB3b3JkKQogewogICAgIENPTVB0cjxJV2ViRWRpdGluZ0Rl
bGVnYXRlPiBlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KFdlYkNv
cmU6OktleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihX
ZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VN
YXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RG
OjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xl
bmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3Mzk0KQorKysgU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wNS0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbUmVmYWN0b3JpbmddIE1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24gdG8gdGhlIFdlYktpdCBsYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
VGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGZyb20g
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnRXaW5DRTo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oOgorICAgICAgICAoRWRpdG9yQ2xpZW50V2luQ0UpOgorCiAyMDEyLTA1LTA0ICBO
YXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG9uJ3QgcmVxdWly
ZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNvbW1pdERhdGEoKSBjYWxsIGZv
ciBlbXB0eSBkb2N1bWVudHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gMTE3Mzcx
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw2ICs0NDMsMTEgQEAgdm9pZCBFZGl0b3JDbGll
bnRXaW5DRTo6dGV4dERpZENoYW5nZUluVAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jv
b2wgRWRpdG9yQ2xpZW50V2luQ0U6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0
aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgRWRpdG9yQ2xpZW50V2luQ0U6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCShy
ZXZpc2lvbiAxMTczNzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKFdlYkNvcmU6
OkVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2Vi
Q29yZTo6RWxlbWVudCopOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0Fm
dGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAg
dmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwg
dm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIGludCosIGludCop
OwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzM5NCkKKysrIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMTYg
IEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9y
aW5nXSBNb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW4gRWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uIHRvIHRoZSBXZWJLaXQgbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIFRleHRDaGVja2VyQ2xp
ZW50OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbgorICAgICAgICBmdW5j
dGlvbiB0byByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBmcm9tIEVkaXRvcjo6cmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbgorICAgICAgICBmdW5jdGlvbi4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RWRpdG9yQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnNo
b3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKEVk
aXRvckNsaWVudFd4KToKKwogMjAxMi0wNS0xNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBBZGQg
YSBjb3VwbGUgbWlzc2luZyBoZWFkZXJzLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMTczNzEpCisrKyBT
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTgsNiArNDk4LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRU
b0NoYW5nZWRTZWwKICAgICB9CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50V3g6OnNob3VsZEVyYXNl
TWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50V3g6Omlnbm9yZVdvcmRJblNw
ZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgCiB7IAogICAgIG5vdEltcGxlbWVudGVkKCk7IApJ
bmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmgJKHJldmlzaW9uIDExNzM3MSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQq
KTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOwog
CisgICAgdmlydHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9u
KFRleHRDaGVja2luZ1R5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5T
cGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhj
b25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBt
aXNzcGVsbGluZ0xlbmd0aCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>