<?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>136545</bug_id>
          
          <creation_ts>2014-09-04 13:36:03 -0700</creation_ts>
          <short_desc>Serialize ResourceResponses using WebKit types</short_desc>
          <delta_ts>2014-09-07 10:45:13 -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>Page Loading</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033291</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-04 13:36:03 -0700</bug_when>
    <thetext>Currently: (network process)  NSURLResponse -&gt; serialization -&gt; (web process) deserialization -&gt; NSURLResponse -&gt; WebKit types
After: (network process)  NSURLResponse -&gt;  WebKit types -&gt; serialization -&gt; (web process) deserialization -&gt; WebKit types

This is more efficient and in most cases we won&apos;t need to construct NSURLResponses in the web process at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033459</commentid>
    <comment_count>1</comment_count>
      <attachid>237691</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-05 08:00:49 -0700</bug_when>
    <thetext>Created attachment 237691
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033463</commentid>
    <comment_count>2</comment_count>
      <attachid>237693</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-05 08:15:32 -0700</bug_when>
    <thetext>Created attachment 237693
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033472</commentid>
    <comment_count>3</comment_count>
      <attachid>237693</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-05 09:49:15 -0700</bug_when>
    <thetext>Comment on attachment 237693
patch 2

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Serialize ResourceResponses using WebKit types

This seems like a good idea, but I honestly don&apos;t know how to evaluate correctness. Perhaps I&apos;m too scarred from dealing with ResourceRequest, which is admittedly much more involved.

Did you check CFNetwork response serialization code for things that we don&apos;t extract into the WebCore class?

&gt; Source/WebCore/platform/network/mac/ResourceResponseMac.mm:70
&gt; -NSURLResponse *ResourceResponse::nsURLResponse() const
&gt; +NSURLResponse* ResourceResponse::nsURLResponse() const

This star was positioned correctly.

&gt; Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:-154
&gt; -    RetainPtr&lt;CFDictionaryRef&gt; dictionary = adoptCF(WKNSURLResponseCreateSerializableRepresentation(resourceResponse.nsURLResponse(), IPC::tokenNullTypeRef()));

WKNSURLResponseCreateSerializableRepresentation should be removed from WKSI now. This patch could remove a declaration from the open source copy.

&gt; Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm:-173
&gt; -    RetainPtr&lt;NSURLResponse&gt; nsURLResponse = WKNSURLResponseFromSerializableRepresentation(dictionary.get(), IPC::tokenNullTypeRef());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033479</commentid>
    <comment_count>4</comment_count>
      <attachid>237693</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-05 10:20:04 -0700</bug_when>
    <thetext>Comment on attachment 237693
patch 2

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

Antti checked what CFNetwork serialization code does, and it seems like we don&apos;t lose much.

r=me with the comments addressed, and Gtk build fixed.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:232
&gt; +    if (!decoder.decode(response.m_httpStatusText))
&gt; +        return false;

We need a Radar and a FIXME somewhere (not here) about how we fail to add m_httpStatusText to NSURLResponse when re-creating it.

This patch fixes status text for XHR, but breaks it for API clients.

The XHR issue this fixes is rdar://problem/13751647, please unskip the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033662</commentid>
    <comment_count>5</comment_count>
      <attachid>237737</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-06 07:50:05 -0700</bug_when>
    <thetext>Created attachment 237737
for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033664</commentid>
    <comment_count>6</comment_count>
      <attachid>237738</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-06 08:02:45 -0700</bug_when>
    <thetext>Created attachment 237738
for bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033667</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-06 08:33:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/173356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033676</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-09-06 10:55:16 -0700</bug_when>
    <thetext>17 test failures after this:
http://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK2%20(Tests)/r173356%20(6649)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033677</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-06 10:59:31 -0700</bug_when>
    <thetext>Should be fixed by https://trac.webkit.org/r173360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033701</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-06 17:06:26 -0700</bug_when>
    <thetext>&gt; WKNSURLResponseCreateSerializableRepresentation should be removed from WKSI now. This patch could remove a declaration from the open source copy.

Do you intend to do this in a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033731</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-07 10:45:13 -0700</bug_when>
    <thetext>Yep.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237691</attachid>
            <date>2014-09-05 08:00:49 -0700</date>
            <delta_ts>2014-09-05 08:15:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>response-no-ns-5.patch</filename>
            <type>text/plain</type>
            <size>18865</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzMxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA5LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxpemUgUmVzb3VyY2VS
ZXNwb25zZXMgdXNpbmcgV2ViS2l0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemF0aW9uIGlzIGZhc3RlciBhbmQgd2UgY2FuIG1v
c3RseSBhdm9pZCBoYXZpbmcgTlNVUkxSZXNwb25zZXMgaW4gd2ViIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
TG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjplbmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisKKyAgICAgICAgICAgIFNlcmlhbGl6
ZSBmcm9tIHRoZSBXZWJDb3JlIGRhdGEgaW5zdGVhZCBvZiBzZXJpYWxpemluZyBOU1VSTFJlc3Bv
bnNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25z
ZSk6CisKKyAgICAgICAgICAgIFN5bnRoZXNpemUgQ0ZVUkxSZXNwb25zZSBieSBjcmVhdGluZyBO
U1VSTFJlc3BvbnNlIG9uIENvY29hIHBsYXRmb3JtcyBzbyB3ZSBkb24ndCBuZWVkIGNvcHkgY29k
ZS4KKyAgICAgICAgICAgIFRoaXMgaGFzIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBO
U1VSTFJlc3BvbnNlIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBDRlVSTFJlc3BvbnNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbik6CisKKyAg
ICAgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IE5TVVJMUmVxdWVzdCBpbnN0YW50aWF0aW9uIGlu
IGRlYnVnIGJ1aWxkcy4KKwogMjAxNC0wOS0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KSBmcm9tIFJlbmRlckJsb2NrIHRvIFJlbmRlckJsb2NrRmxvdwpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDE3MzI3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4MzcsNyBAQCBfX1pOSzdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE3c3VnCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTIxZXhwZWN0ZWRDb250ZW50TGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZThtaW1lVHlwZUV2CiBf
X1pOSzdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDdpbnZlcnNlRXYKIF9fWk5LN1dlYkNv
cmUyMFRyYW5zZm9ybWF0aW9uTWF0cml4N21hcFJlY3RFUktOU183SW50UmVjdEUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAkocmV2aXNpb24gMTczMjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsMTAgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0K
LSAgICAKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFJlc291cmNlTG9hZFRpbWluZyYpOworCiAgICAgLy8gVGhlc2UgYXJlIG1pbGxp
c2Vjb25kIGRlbHRhcyBmcm9tIHRoZSBuYXZpZ2F0aW9uIHN0YXJ0LgogICAgIGludCBkb21haW5M
b29rdXBTdGFydDsKICAgICBpbnQgZG9tYWluTG9va3VwRW5kOwpAQCAtOTEsNiArOTQsMzAgQEAg
cHVibGljOgogICAgIGludCBzZWN1cmVDb25uZWN0aW9uU3RhcnQ7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBSZXNvdXJjZUxvYWRUaW1pbmc6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwU3RhcnQ7CisgICAg
ZW5jb2RlciA8PCBkb21haW5Mb29rdXBFbmQ7CisgICAgZW5jb2RlciA8PCBjb25uZWN0U3RhcnQ7
CisgICAgZW5jb2RlciA8PCBjb25uZWN0RW5kOworICAgIGVuY29kZXIgPDwgcmVxdWVzdFN0YXJ0
OworICAgIGVuY29kZXIgPDwgcmVzcG9uc2VTdGFydDsKKyAgICBlbmNvZGVyIDw8IHNlY3VyZUNv
bm5lY3Rpb25TdGFydDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgUmVzb3Vy
Y2VMb2FkVGltaW5nOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29r
dXBTdGFydCkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RTdGFydCkKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RFbmQpCisgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KHRpbWluZy5yZXNwb25zZVN0YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgJKHJldmlzaW9uIDE3MzI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw5IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJlc291cmNlUmVzcG9uc2VCYXNlJik7
CisKIHByb3RlY3RlZDoKICAgICBlbnVtIEluaXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6
ZWQsCkBAIC0xODYsNiArMTg5LDYwIEBAIHByaXZhdGU6CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsg
cmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2lzTnVsbDsKKyAgICBpZiAobV9pc051bGwpCisgICAg
ICAgIHJldHVybjsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworCisgICAgZW5jb2RlciA8PCBt
X3VybC5zdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CisgICAgZW5jb2RlciA8
PCBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBlbmNvZGVyIDw8IG1fdGV4dEVuY29kaW5n
TmFtZTsKKyAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c1RleHQ7CisgICAgZW5jb2RlciA8PCBt
X2h0dHBIZWFkZXJGaWVsZHM7CisgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRpbWluZzsK
KyAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CisgICAgZW5jb2RlciA8PCBtX2Nvbm5l
Y3Rpb25JRDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlQmFzZSYg
cmVzcG9uc2UpCit7CisgICAgQVNTRVJUKHJlc3BvbnNlLm1faXNOdWxsKTsKKyAgICBib29sIHJl
c3BvbnNlSXNOdWxsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VJc051bGwpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3BvbnNlSXNOdWxsKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyB1cmw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1
cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV91cmwgPSBVUkwoVVJM
KCksIHVybCk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX21pbWVUeXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3RleHRFbmNvZGluZ05hbWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNUZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzcG9uc2UubV9odHRwSGVhZGVyRmllbGRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9yZXNvdXJjZUxvYWRUaW1pbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0
dHBTdGF0dXNDb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzcG9uc2UubV9jb25uZWN0aW9uSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAxNzMyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwx
MyBAQCBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1vbkhlYWRlckZpZWxkcyA9CiBDRlVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlm
ICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBuc1VSTFJlc3BvbnNlKCk7CisjZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7Ci0KICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3Jl
YXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVu
IGhhdmUgYSBzdGF0dXMgY29kZS4KLQogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENG
VVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGlu
Z05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVz
cG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTczMjcyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmluaXRO
U1VSTFJlc3BvbnNlCiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCi1OU1VSTFJlc3BvbnNlICpSZXNv
dXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKK05TVVJMUmVzcG9uc2UqIFJlc291
cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9uc1Jlc3Bv
bnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7CiAgICAgICAgIGluaXROU1VSTFJl
c3BvbnNlKCk7CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0
Zm9ybUNvbXBhcmUoYwogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hh
aW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQogewotICAgIEFTU0VSVCghd2tDb3B5TlNV
UkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7CisgICAgQVNTRVJU
KCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG1f
bnNSZXNwb25zZS5nZXQoKSkpOwogICAgIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0gY2Vy
dGlmaWNhdGVDaGFpbjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzMyNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25z
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
cGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVzb3VyY2VSZXNwb25zZSYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTsKIApAQCAtOTAsNiArOTMsMjUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRv
UGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
KSB7IH0KIH07CiAKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFJlc291cmNlUmVzcG9u
c2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBpZiAoIVJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoZGVjb2RlciwgcmVzcG9u
c2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdWludDMyX3Qgc291cE1lc3NhZ2VGbGFn
czsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXBNZXNzYWdlRmxhZ3MpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgbV9zb3VwRmxhZ3MgPSBzb3VwTWVzc2FnZUZsYWdzOworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZW5jb2RlKGVuY29kZXIpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG1fc291cEZsYWdzKTsKK30KKwogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2Ug
ewogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMzExKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMDUg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcmlhbGl6ZSBS
ZXNvdXJjZVJlc3BvbnNlcyB1c2luZyBXZWJLaXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjU0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgV0syIHNlcmlhbGl6YXRpb24g
Y29kZSBmb3IgcmVzcG9uc2VzLiBJdCBtb3ZlcyB0byB0aGUgdHlwZXMgaXRzZWxmIGluIFdlYkNv
cmUgd2hlcmUgaXQgaXMKKyAgICAgICAgY2xvc2UgdG8gdGhlIGRhdGEgYmVpbmcgc2VyaWFsaXpl
ZCBhbmQgbGVzcyBsaWtlbHkgdG8gZ2V0IG91dCBvZiBzeW5jLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
c291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OiBEZWxldGVkLgorCiAyMDE0LTA5LTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9u
IEdUSyBwb3J0IHNpbmNlIHIxNzMzMDUuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTczMjcyKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3NCwxMjMgKzY3NCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjpkZWMKICAgICByZXR1cm4gcmVzb3VyY2VSZXF1ZXN0LmRlY29kZVdpdGhvdXRQbGF0Zm9ybURh
dGEoZGVjb2Rlcik7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzb3VyY2VSZXNwb25zZSkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHNob3Vs
ZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gIXJlc291cmNlUmVzcG9uc2UucGxhdGZvcm1SZXNwb25z
ZUlzVXBUb0RhdGUoKTsKLSAgICBlbmNvZGVyIDw8IHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRh
OwotI2Vsc2UKLSAgICBib29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gdHJ1ZTsKLSNl
bmRpZgotCi0gICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNlUmVzcG9uc2Up
OwotCi0gICAgaWYgKHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7Ci0gICAgICAgIGJvb2wg
cmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3BvbnNlLmlzTnVsbCgpOwotICAgICAgICBlbmNv
ZGVyIDw8IHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAocmVzcG9uc2VJc051bGwpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlc3BvbnNlLnVy
bCgpLnN0cmluZygpOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDMyX3Q+KHJl
c291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVz
b3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7Ci0KLSAgICAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VS
ZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0g
ICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOwotICAg
IH0KLSAgICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBjb25zdCBSZXNvdXJjZUxvYWRU
aW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0g
ICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgZW5jb2RlciA8PCB0
aW1pbmcuZG9tYWluTG9va3VwRW5kOwotICAgIGVuY29kZXIgPDwgdGltaW5nLmNvbm5lY3RTdGFy
dDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5jb25uZWN0RW5kOwotICAgIGVuY29kZXIgPDwgdGlt
aW5nLnJlcXVlc3RTdGFydDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5yZXNwb25zZVN0YXJ0Owot
ICAgIGVuY29kZXIgPDwgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSNlbmRpZgotfQot
Ci1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCi17Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYXNTZXJpYWxpemVkV2ViQ29yZURhdGE7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTZXJpYWxpemVkV2ViQ29yZURhdGEpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGJvb2wgaGFzU2VyaWFsaXplZFdlYkNvcmVEYXRh
ID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLQotICAg
IGlmICghZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc3BvbnNlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1NlcmlhbGl6ZWRXZWJDb3JlRGF0YSkgewotICAgICAg
ICBib29sIHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Bv
bnNlSXNOdWxsKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHJlc3Bv
bnNlSXNOdWxsKSB7Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBT
dHJpbmcgdXJsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFVSTChVUkwoVVJMKCksIHVybCkp
OwotCi0gICAgICAgIGludDMyX3QgaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZSk7Ci0KLSAgICAg
ICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhl
YWRlcnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKLQotICAgICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0KLSAg
ICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodGV4dEVuY29kaW5nTmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7Ci0KLSAgICAg
ICAgaW50NjRfdCBjb250ZW50TGVuZ3RoOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bnRlbnRMZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXNwb25z
ZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7Ci0KLSAgICAgICAgU3Ry
aW5nIGh0dHBTdGF0dXNUZXh0OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGh0dHBTdGF0
dXNUZXh0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoaHR0cFN0YXR1c1RleHQpOwotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUo
V0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFp
bkxvb2t1cFN0YXJ0KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxv
b2t1cEVuZCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5jb25uZWN0U3RhcnQp
Ci0gICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuY29ubmVjdEVuZCkKLSAgICAgICAg
fHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCi0gICAgICAgIHx8ICFkZWNv
ZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFydCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCiB7CiAgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNlRXJyb3IpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAko
cmV2aXNpb24gMTczMjcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsMTMgKzI1MSw2IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiB9
OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZv
aWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotfTsKLQogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDE3MzI3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNDIgKzE0Myw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQot
ewotICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNlLnBsYXRmb3Jt
UmVzcG9uc2VJc1VwVG9EYXRlKCkgJiYgcmVzb3VyY2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7
Ci0gICAgZW5jb2RlciA8PCByZXNwb25zZUlzUHJlc2VudDsKLQotICAgIGlmICghcmVzcG9uc2VJ
c1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLTlNVUkxSZXNwb25zZUNyZWF0ZVNlcmlhbGl6YWJs
ZVJlcHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBJUEM6OnRv
a2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnku
Z2V0KCkpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2Um
IHJlc291cmNlUmVzcG9uc2UpCi17Ci0gICAgYm9vbCByZXNwb25zZUlzUHJlc2VudDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFyZXNwb25zZUlzUHJlc2VudCkgewotICAgICAgICByZXNvdXJjZVJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5OwotICAgIGlmICgh
SVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBuc1VSTFJlc3BvbnNlID0gV0tOU1VSTFJl
c3BvbnNlRnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQ
Qzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKLQotICAgIGlmICghbnNVUkxSZXNwb25zZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2UobnNVUkxSZXNwb25zZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJn
dW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBDRkFy
cmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFp
bigpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAJKHJldmlzaW9uIDE3MzI3MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsMjAgKzEwNCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
cXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJl
c291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVzcG9uc2Uuc291cE1lc3Nh
Z2VGbGFncygpKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIHVpbnQzMl90IHNvdXBNZXNzYWdlRmxhZ3M7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3NhZ2VGbGFncyhzdGF0
aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmlj
YXRlSW5mbykKIHsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237693</attachid>
            <date>2014-09-05 08:15:32 -0700</date>
            <delta_ts>2014-09-06 07:50:05 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>response-no-ns-6.patch</filename>
            <type>text/plain</type>
            <size>18874</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzMxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA5LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxpemUgUmVzb3VyY2VS
ZXNwb25zZXMgdXNpbmcgV2ViS2l0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemF0aW9uIGlzIGZhc3RlciBhbmQgd2UgY2FuIG1v
c3RseSBhdm9pZCBoYXZpbmcgTlNVUkxSZXNwb25zZXMgaW4gd2ViIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
TG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjplbmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisKKyAgICAgICAgICAgIFNlcmlhbGl6
ZSBmcm9tIHRoZSBXZWJDb3JlIGRhdGEgaW5zdGVhZCBvZiBzZXJpYWxpemluZyBOU1VSTFJlc3Bv
bnNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25z
ZSk6CisKKyAgICAgICAgICAgIFN5bnRoZXNpemUgQ0ZVUkxSZXNwb25zZSBieSBjcmVhdGluZyBO
U1VSTFJlc3BvbnNlIG9uIENvY29hIHBsYXRmb3JtcyBzbyB3ZSBkb24ndCBuZWVkIGNvcHkgY29k
ZS4KKyAgICAgICAgICAgIFRoaXMgaGFzIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBO
U1VSTFJlc3BvbnNlIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBDRlVSTFJlc3BvbnNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbik6CisKKyAg
ICAgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IE5TVVJMUmVxdWVzdCBpbnN0YW50aWF0aW9uIGlu
IGRlYnVnIGJ1aWxkcy4KKwogMjAxNC0wOS0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgY29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KSBmcm9tIFJlbmRlckJsb2NrIHRvIFJlbmRlckJsb2NrRmxvdwpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDE3MzI3MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4MzcsNyBAQCBfX1pOSzdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE3c3VnCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTIxZXhwZWN0ZWRDb250ZW50TGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBF
dgorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0
TGV2ZWxFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZThtaW1lVHlwZUV2CiBf
X1pOSzdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDdpbnZlcnNlRXYKIF9fWk5LN1dlYkNv
cmUyMFRyYW5zZm9ybWF0aW9uTWF0cml4N21hcFJlY3RFUktOU183SW50UmVjdEUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAkocmV2aXNpb24gMTczMjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUxvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsMTAgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0K
LSAgICAKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFJlc291cmNlTG9hZFRpbWluZyYpOworCiAgICAgLy8gVGhlc2UgYXJlIG1pbGxp
c2Vjb25kIGRlbHRhcyBmcm9tIHRoZSBuYXZpZ2F0aW9uIHN0YXJ0LgogICAgIGludCBkb21haW5M
b29rdXBTdGFydDsKICAgICBpbnQgZG9tYWluTG9va3VwRW5kOwpAQCAtOTEsNiArOTQsMzAgQEAg
cHVibGljOgogICAgIGludCBzZWN1cmVDb25uZWN0aW9uU3RhcnQ7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBSZXNvdXJjZUxvYWRUaW1pbmc6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwU3RhcnQ7CisgICAg
ZW5jb2RlciA8PCBkb21haW5Mb29rdXBFbmQ7CisgICAgZW5jb2RlciA8PCBjb25uZWN0U3RhcnQ7
CisgICAgZW5jb2RlciA8PCBjb25uZWN0RW5kOworICAgIGVuY29kZXIgPDwgcmVxdWVzdFN0YXJ0
OworICAgIGVuY29kZXIgPDwgcmVzcG9uc2VTdGFydDsKKyAgICBlbmNvZGVyIDw8IHNlY3VyZUNv
bm5lY3Rpb25TdGFydDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgUmVzb3Vy
Y2VMb2FkVGltaW5nOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VMb2FkVGltaW5n
JiB0aW1pbmcpCit7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29r
dXBTdGFydCkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RTdGFydCkKKyAgICAg
ICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLmNvbm5lY3RFbmQpCisgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KHRpbWluZy5yZXNwb25zZVN0YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgJKHJldmlzaW9uIDE3MzI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw5IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJlc291cmNlUmVzcG9uc2VCYXNlJik7
CisKIHByb3RlY3RlZDoKICAgICBlbnVtIEluaXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6
ZWQsCkBAIC0xODYsNiArMTg5LDYwIEBAIHByaXZhdGU6CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsg
cmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2lzTnVsbDsKKyAgICBpZiAobV9pc051bGwpCisgICAg
ICAgIHJldHVybjsKKyAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworCisgICAgZW5jb2RlciA8PCBt
X3VybC5zdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CisgICAgZW5jb2RlciA8
PCBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICBlbmNvZGVyIDw8IG1fdGV4dEVuY29kaW5n
TmFtZTsKKyAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c1RleHQ7CisgICAgZW5jb2RlciA8PCBt
X2h0dHBIZWFkZXJGaWVsZHM7CisgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRpbWluZzsK
KyAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CisgICAgZW5jb2RlciA8PCBtX2Nvbm5l
Y3Rpb25JRDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlQmFzZSYg
cmVzcG9uc2UpCit7CisgICAgQVNTRVJUKHJlc3BvbnNlLm1faXNOdWxsKTsKKyAgICBib29sIHJl
c3BvbnNlSXNOdWxsOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VJc051bGwpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3BvbnNlSXNOdWxsKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyB1cmw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1
cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV91cmwgPSBVUkwoVVJM
KCksIHVybCk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX21pbWVUeXBlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3RleHRFbmNvZGluZ05hbWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0
dXNUZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzcG9uc2UubV9odHRwSGVhZGVyRmllbGRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9yZXNvdXJjZUxvYWRUaW1pbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0
dHBTdGF0dXNDb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzcG9uc2UubV9jb25uZWN0aW9uSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAxNzMyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwx
MyBAQCBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1vbkhlYWRlckZpZWxkcyA9CiBDRlVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlm
ICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBuc1VSTFJlc3BvbnNlKCk7CisjZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7Ci0KICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3Jl
YXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVu
IGhhdmUgYSBzdGF0dXMgY29kZS4KLQogICAgICAgICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENG
VVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGlu
Z05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVz
cG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMTczMjcyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmluaXRO
U1VSTFJlc3BvbnNlCiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCi1OU1VSTFJlc3BvbnNlICpSZXNv
dXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKK05TVVJMUmVzcG9uc2UqIFJlc291
cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9uc1Jlc3Bv
bnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7CiAgICAgICAgIGluaXROU1VSTFJl
c3BvbnNlKCk7CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0
Zm9ybUNvbXBhcmUoYwogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRlQ2hh
aW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQogewotICAgIEFTU0VSVCghd2tDb3B5TlNV
UkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7CisgICAgQVNTRVJU
KCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluKG1f
bnNSZXNwb25zZS5nZXQoKSkpOwogICAgIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0gY2Vy
dGlmaWNhdGVDaGFpbjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzMyNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25z
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
cGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVzb3VyY2VSZXNwb25zZSYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTsKIApAQCAtOTAsNiArOTMsMjUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRv
UGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
KSB7IH0KIH07CiAKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIFJlc291cmNlUmVzcG9u
c2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBpZiAoIVJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoZGVjb2RlciwgcmVzcG9u
c2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdWludDMyX3Qgc291cE1lc3NhZ2VGbGFn
czsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXBNZXNzYWdlRmxhZ3MpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9zb3VwRmxhZ3MgPSBzb3VwTWVzc2FnZUZsYWdz
OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBS
ZXNvdXJjZVJlc3BvbnNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKGVuY29kZXIpOworICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1fc291cEZsYWdzKTsKK30KKwogc3RydWN0IENyb3NzVGhyZWFk
UmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YUJhc2UgewogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMzExKQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTQtMDktMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNl
cmlhbGl6ZSBSZXNvdXJjZVJlc3BvbnNlcyB1c2luZyBXZWJLaXQgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjU0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgV0syIHNlcmlh
bGl6YXRpb24gY29kZSBmb3IgcmVzcG9uc2VzLiBJdCBtb3ZlcyB0byB0aGUgdHlwZXMgaXRzZWxm
IGluIFdlYkNvcmUgd2hlcmUgaXQgaXMKKyAgICAgICAgY2xvc2UgdG8gdGhlIGRhdGEgYmVpbmcg
c2VyaWFsaXplZCBhbmQgbGVzcyBsaWtlbHkgdG8gZ2V0IG91dCBvZiBzeW5jLgorCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0
Zm9ybURhdGEpOiBEZWxldGVkLgorCiAyMDE0LTA5LTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3Vu
Zy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVp
bGQgZml4IG9uIEdUSyBwb3J0IHNpbmNlIHIxNzMzMDUuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTczMjcyKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3NCwxMjMgKzY3NCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gcmVzb3VyY2VSZXF1ZXN0LmRlY29kZVdpdGhvdXRQ
bGF0Zm9ybURhdGEoZGVjb2Rlcik7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBi
b29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gIXJlc291cmNlUmVzcG9uc2UucGxhdGZv
cm1SZXNwb25zZUlzVXBUb0RhdGUoKTsKLSAgICBlbmNvZGVyIDw8IHNob3VsZFNlcmlhbGl6ZVdl
YkNvcmVEYXRhOwotI2Vsc2UKLSAgICBib29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0g
dHJ1ZTsKLSNlbmRpZgotCi0gICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNl
UmVzcG9uc2UpOwotCi0gICAgaWYgKHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7Ci0gICAg
ICAgIGJvb2wgcmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3BvbnNlLmlzTnVsbCgpOwotICAg
ICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAocmVzcG9uc2VJc051
bGwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJl
c3BvbnNlLnVybCgpLnN0cmluZygpOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7Ci0KLSAgICAgICAgZW5j
b2RlciA8PCByZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCk7Ci0gICAgICAgIGVuY29kZXIgPDwg
cmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzVGV4
dCgpOwotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGlt
aW5nKCk7Ci0gICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgZW5j
b2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwRW5kOwotICAgIGVuY29kZXIgPDwgdGltaW5nLmNv
bm5lY3RTdGFydDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5jb25uZWN0RW5kOwotICAgIGVuY29k
ZXIgPDwgdGltaW5nLnJlcXVlc3RTdGFydDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5yZXNwb25z
ZVN0YXJ0OwotICAgIGVuY29kZXIgPDwgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSNl
bmRpZgotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9u
c2UpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYXNTZXJpYWxpemVkV2ViQ29y
ZURhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTZXJpYWxpemVkV2ViQ29yZURhdGEp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGJvb2wgaGFzU2VyaWFsaXplZFdl
YkNvcmVEYXRhID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKLQotICAgIGlmICghZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc3BvbnNlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1NlcmlhbGl6ZWRXZWJDb3JlRGF0YSkg
ewotICAgICAgICBib29sIHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlSXNOdWxsKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKHJlc3BvbnNlSXNOdWxsKSB7Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFVSTChVUkwoVVJM
KCksIHVybCkpOwotCi0gICAgICAgIGludDMyX3QgaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZSk7
Ci0KLSAgICAgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhlYWRlcnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3Ig
KEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQg
PSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICByZXNwb25zZS5z
ZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKLQotICAgICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlw
ZSk7Ci0KLSAgICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodGV4dEVuY29kaW5nTmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7
Ci0KLSAgICAgICAgaW50NjRfdCBjb250ZW50TGVuZ3RoOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7Ci0KLSAg
ICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGh0dHBTdGF0dXNUZXh0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoaHR0cFN0YXR1c1RleHQpOwotICAgIH0KLSAgICAKLSNp
ZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJl
c3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGlt
aW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5n
LmRvbWFpbkxvb2t1cEVuZCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5jb25u
ZWN0U3RhcnQpCi0gICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuY29ubmVjdEVuZCkK
LSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCi0gICAgICAg
IHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFydCkKLSAgICAgICAgfHwgIWRl
Y29kZXIuZGVjb2RlKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46
OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJl
c291cmNlRXJyb3IpCiB7CiAgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNl
RXJyb3IpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkocmV2aXNpb24gMTczMjcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsMTMgKzI1MSw2IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
c3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotfTsK
LQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9u
IDE3MzI3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNDIgKzE0Myw2IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJl
c3BvbnNlKQotewotICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNl
LnBsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKCkgJiYgcmVzb3VyY2VSZXNwb25zZS5uc1VSTFJl
c3BvbnNlKCk7Ci0gICAgZW5jb2RlciA8PCByZXNwb25zZUlzUHJlc2VudDsKLQotICAgIGlmICgh
cmVzcG9uc2VJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLTlNVUkxSZXNwb25zZUNyZWF0ZVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
LCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRp
Y3Rpb25hcnkuZ2V0KCkpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNl
UmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCi17Ci0gICAgYm9vbCByZXNwb25zZUlzUHJlc2Vu
dDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFyZXNwb25zZUlzUHJlc2VudCkgewotICAgICAgICBy
ZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5Owot
ICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBuc1VSTFJlc3BvbnNlID0g
V0tOU1VSTFJlc3BvbnNlRnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnku
Z2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKLQotICAgIGlmICghbnNVUkxSZXNwb25z
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IFJlc291
cmNlUmVzcG9uc2UobnNVUkxSZXNwb25zZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsK
ICAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2VydGlm
aWNhdGVDaGFpbigpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAJKHJldmlzaW9uIDE3MzI3MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjAgKzEwNCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQot
ewotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVzcG9uc2Uu
c291cE1lc3NhZ2VGbGFncygpKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVz
cG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIHVpbnQzMl90IHNvdXBNZXNz
YWdlRmxhZ3M7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3NhZ2VG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0
ZSgpKSB7Cg==
</data>
<flag name="review"
          id="262424"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237737</attachid>
            <date>2014-09-06 07:50:05 -0700</date>
            <delta_ts>2014-09-06 08:02:45 -0700</delta_ts>
            <desc>for bots</desc>
            <filename>response-no-ns-10.patch</filename>
            <type>text/plain</type>
            <size>19219</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzMxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA5LTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxpemUgUmVzb3VyY2VS
ZXNwb25zZXMgdXNpbmcgV2ViS2l0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemF0aW9uIGlzIGZhc3RlciBhbmQgd2UgY2FuIG1v
c3RseSBhdm9pZCBoYXZpbmcgTlNVUkxSZXNwb25zZXMgaW4gd2ViIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
TG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjplbmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisKKyAgICAgICAgICAgIFNlcmlhbGl6
ZSBmcm9tIHRoZSBXZWJDb3JlIGRhdGEgaW5zdGVhZCBvZiBzZXJpYWxpemluZyBOU1VSTFJlc3Bv
bnNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25z
ZSk6CisKKyAgICAgICAgICAgIFN5bnRoZXNpemUgQ0ZVUkxSZXNwb25zZSBieSBjcmVhdGluZyBO
U1VSTFJlc3BvbnNlIG9uIENvY29hIHBsYXRmb3JtcyBzbyB3ZSBkb24ndCBuZWVkIGNvcHkgY29k
ZS4KKyAgICAgICAgICAgIFRoaXMgaGFzIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBO
U1VSTFJlc3BvbnNlIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBDRlVSTFJlc3BvbnNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbik6CisKKyAg
ICAgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IE5TVVJMUmVxdWVzdCBpbnN0YW50aWF0aW9uIGlu
IGRlYnVnIGJ1aWxkcy4KKwogMjAxNC0wOS0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTczMjcyKTogVHdvIGJsb2IgdGVzdHMgZmFp
bGluZyBvbiBXSzEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzMyNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTgzNyw2
ICsxODM3LDcgQEAgX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1ZwogX19a
Tks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2
CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTN1cmxFdgogX19aTks3V2ViQ29y
ZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVFRQRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlOGxhenlJbml0RU5TMF85SW5pdExldmVsRQogX19aTks3V2ViQ29yZTIwUmVz
b3VyY2VSZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIwVHJhbnNmb3JtYXRp
b25NYXRyaXg3aW52ZXJzZUV2CiBfX1pOSzdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDdt
YXBSZWN0RVJLTlNfN0ludFJlY3RFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgJKHJldmlzaW9uIDE3MzI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXNvdXJjZUxvYWRUaW1p
bmcmKTsKKwogICAgIC8vIFRoZXNlIGFyZSBtaWxsaXNlY29uZCBkZWx0YXMgZnJvbSB0aGUgbmF2
aWdhdGlvbiBzdGFydC4KICAgICBpbnQgZG9tYWluTG9va3VwU3RhcnQ7CiAgICAgaW50IGRvbWFp
bkxvb2t1cEVuZDsKQEAgLTkxLDYgKzk0LDMwIEBAIHB1YmxpYzoKICAgICBpbnQgc2VjdXJlQ29u
bmVjdGlvblN0YXJ0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVzb3Vy
Y2VMb2FkVGltaW5nOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IGRvbWFpbkxvb2t1cFN0YXJ0OworICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwRW5k
OworICAgIGVuY29kZXIgPDwgY29ubmVjdFN0YXJ0OworICAgIGVuY29kZXIgPDwgY29ubmVjdEVu
ZDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RTdGFydDsKKyAgICBlbmNvZGVyIDw8IHJlc3BvbnNl
U3RhcnQ7CisgICAgZW5jb2RlciA8PCBzZWN1cmVDb25uZWN0aW9uU3RhcnQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+Citib29sIFJlc291cmNlTG9hZFRpbWluZzo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQoreworICAgIHJldHVybiBk
ZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCisgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCisgICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKHRpbWluZy5jb25uZWN0U3RhcnQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWlu
Zy5jb25uZWN0RW5kKQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVxdWVzdFN0
YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFydCkKKyAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7Cit9
CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxNzMyNzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBSZXNvdXJjZVJlc3BvbnNlQmFzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBJ
bml0TGV2ZWwgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtMTg2LDYgKzE4OSw2MiBAQCBw
cml2YXRlOgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBh
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiAhKGEgPT0g
Yik7IH0KIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9p
c051bGw7CisgICAgaWYgKG1faXNOdWxsKQorICAgICAgICByZXR1cm47CisgICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKKworICAgIGVuY29kZXIgPDwgbV91cmwuc3RyaW5nKCk7CisgICAgZW5jb2Rl
ciA8PCBtX21pbWVUeXBlOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgIGVuY29kZXIgPDwgbV90ZXh0RW5jb2RpbmdOYW1l
OworICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzVGV4dDsKKyAgICBlbmNvZGVyIDw8IG1faHR0
cEhlYWRlckZpZWxkczsKKyAgICBlbmNvZGVyIDw8IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAg
IGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKKyAgICBlbmNvZGVyIDw8IG1fY29ubmVjdGlv
bklEOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNw
b25zZSkKK3sKKyAgICBBU1NFUlQocmVzcG9uc2UubV9pc051bGwpOworICAgIGJvb2wgcmVzcG9u
c2VJc051bGw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUlzTnVsbCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzcG9uc2VJc051bGwpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgU3RyaW5nIHVybDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5tX3VybCA9IFVSTChVUkwoKSwg
dXJsKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fbWltZVR5cGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGg7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShleHBlY3RlZENvbnRlbnRMZW5ndGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBl
Y3RlZENvbnRlbnRMZW5ndGg7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3Rl
eHRFbmNvZGluZ05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNUZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRwSGVhZGVyRmllbGRzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9yZXNvdXJjZUxvYWRUaW1pbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9jb25uZWN0aW9uSUQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNzMyNzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMyBAQCBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1v
bkhlYWRlckZpZWxkcyA9CiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJM
UmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkg
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBuc1VSTFJlc3BvbnNlKCk7CisjZWxzZQog
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7Ci0K
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJl
c3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KLQogICAgICAg
ICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
cmV2aXNpb24gMTczMzE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNlCiAgICAgICAgIG1fbnNSZXNw
b25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDptX3VybCBN
SU1FVHlwZTptX21pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpleHBlY3RlZENvbnRlbnRM
ZW5ndGggdGV4dEVuY29kaW5nTmFtZTptX3RleHRFbmNvZGluZ05hbWVdKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBsb3NlIHRoZSBzdGF0dXMgdGV4dCBhbmQg
dGhlIEhUVFAgdmVyc2lvbiBoZXJlLgogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRp
Y3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICBmb3IgKGF1
dG8mIGhlYWRlciA6IG1faHR0cEhlYWRlckZpZWxkcykKICAgICAgICAgW2hlYWRlckRpY3Rpb25h
cnkgc2V0T2JqZWN0OihOU1N0cmluZyAqKWhlYWRlci52YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICop
aGVhZGVyLmtleV07CkBAIC0xODUsNyArMTg3LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUNvbXBhcmUoYwogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRl
Q2hhaW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQogewotICAgIEFTU0VSVCghd2tDb3B5
TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7CisgICAgQVNT
RVJUKCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWlu
KG1fbnNSZXNwb25zZS5nZXQoKSkpOwogICAgIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0g
Y2VydGlmaWNhdGVDaGFpbjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzMy
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNw
b25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgUmVzb3VyY2VSZXNwb25zZSYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTsKIApAQCAtOTAsNiArOTMsMjUgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KSB7IH0KIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFJlc291cmNlUmVz
cG9uc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFJlc291cmNlUmVz
cG9uc2VCYXNlOjplbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9zb3VwRmxhZ3MpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9v
bCBSZXNvdXJjZVJlc3BvbnNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2Rl
KGRlY29kZXIsIHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVpbnQzMl90
IHNvdXBNZXNzYWdlRmxhZ3M7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VwTWVzc2FnZUZs
YWdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fc291cEZsYWdzID0g
c291cE1lc3NhZ2VGbGFnczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RydWN0IENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YUJhc2UgewogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMzExKQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTQtMDktMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAg
IFNlcmlhbGl6ZSBSZXNvdXJjZVJlc3BvbnNlcyB1c2luZyBXZWJLaXQgdHlwZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjU0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgV0syIHNl
cmlhbGl6YXRpb24gY29kZSBmb3IgcmVzcG9uc2VzLiBJdCBtb3ZlcyB0byB0aGUgdHlwZXMgaXRz
ZWxmIGluIFdlYkNvcmUgd2hlcmUgaXQgaXMKKyAgICAgICAgY2xvc2UgdG8gdGhlIGRhdGEgYmVp
bmcgc2VyaWFsaXplZCBhbmQgbGVzcyBsaWtlbHkgdG8gZ2V0IG91dCBvZiBzeW5jLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZSk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNo
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOiBEZWxldGVkLgorCiAyMDE0LTA5LTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUg
YnVpbGQgZml4IG9uIEdUSyBwb3J0IHNpbmNlIHIxNzMzMDUuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTczMjcy
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3NCwxMjMgKzY3NCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gcmVzb3VyY2VSZXF1ZXN0LmRlY29kZVdpdGhv
dXRQbGF0Zm9ybURhdGEoZGVjb2Rlcik7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBib29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gIXJlc291cmNlUmVzcG9uc2UucGxh
dGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKTsKLSAgICBlbmNvZGVyIDw8IHNob3VsZFNlcmlhbGl6
ZVdlYkNvcmVEYXRhOwotI2Vsc2UKLSAgICBib29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRh
ID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291
cmNlUmVzcG9uc2UpOwotCi0gICAgaWYgKHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7Ci0g
ICAgICAgIGJvb2wgcmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3BvbnNlLmlzTnVsbCgpOwot
ICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAocmVzcG9uc2VJ
c051bGwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZW5jb2RlciA8PCByZXNvdXJj
ZVJlc3BvbnNlLnVybCgpLnN0cmluZygpOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PGludDMyX3Q+KHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgIGVu
Y29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7Ci0KLSAgICAgICAg
ZW5jb2RlciA8PCByZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCk7Ci0gICAgICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7Ci0gICAgICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVzb3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVz
VGV4dCgpOwotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBjb25zdCBS
ZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCk7Ci0gICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAg
ZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9va3VwRW5kOwotICAgIGVuY29kZXIgPDwgdGltaW5n
LmNvbm5lY3RTdGFydDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5jb25uZWN0RW5kOwotICAgIGVu
Y29kZXIgPDwgdGltaW5nLnJlcXVlc3RTdGFydDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5yZXNw
b25zZVN0YXJ0OwotICAgIGVuY29kZXIgPDwgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsK
LSNlbmRpZgotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVz
cG9uc2UpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYXNTZXJpYWxpemVkV2Vi
Q29yZURhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTZXJpYWxpemVkV2ViQ29yZURh
dGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGJvb2wgaGFzU2VyaWFsaXpl
ZFdlYkNvcmVEYXRhID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLQotICAgIGlmICghZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc3BvbnNlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc1NlcmlhbGl6ZWRXZWJDb3JlRGF0
YSkgewotICAgICAgICBib29sIHJlc3BvbnNlSXNOdWxsOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3BvbnNlSXNOdWxsKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKHJlc3BvbnNlSXNOdWxsKSB7Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFVSTChVUkwo
VVJMKCksIHVybCkpOwotCi0gICAgICAgIGludDMyX3QgaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29k
ZSk7Ci0KLSAgICAgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhlYWRlcnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBl
bmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICByZXNwb25z
ZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKLQotICAgICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1l
VHlwZSk7Ci0KLSAgICAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGV4dEVuY29kaW5nTmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFt
ZSk7Ci0KLSAgICAgICAgaW50NjRfdCBjb250ZW50TGVuZ3RoOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7Ci0K
LSAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGh0dHBTdGF0dXNUZXh0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoaHR0cFN0YXR1c1RleHQpOwotICAgIH0KLSAgICAK
LSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9
IHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGlt
aW5nLmRvbWFpbkxvb2t1cEVuZCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5j
b25uZWN0U3RhcnQpCi0gICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcuY29ubmVjdEVu
ZCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCi0gICAg
ICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFydCkKLSAgICAgICAgfHwg
IWRlY29kZXIuZGVjb2RlKHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJv
cj46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IHJlc291cmNlRXJyb3IpCiB7CiAgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291
cmNlRXJyb3IpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAkocmV2aXNpb24gMTczMjcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsMTMgKzI1MSw2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9v
bCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
fTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlz
aW9uIDE3MzI3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNDIgKzE0Myw2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJj
ZVJlc3BvbnNlKQotewotICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3Bv
bnNlLnBsYXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKCkgJiYgcmVzb3VyY2VSZXNwb25zZS5uc1VS
TFJlc3BvbnNlKCk7Ci0gICAgZW5jb2RlciA8PCByZXNwb25zZUlzUHJlc2VudDsKLQotICAgIGlm
ICghcmVzcG9uc2VJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLTlNVUkxSZXNwb25zZUNyZWF0
ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IGRpY3Rpb25hcnkuZ2V0KCkpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNw
b25zZT46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291
cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCi17Ci0gICAgYm9vbCByZXNwb25zZUlzUHJl
c2VudDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFyZXNwb25zZUlzUHJlc2VudCkgewotICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5
OwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBuc1VSTFJlc3BvbnNl
ID0gV0tOU1VSTFJlc3BvbnNlRnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25h
cnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKLQotICAgIGlmICghbnNVUkxSZXNw
b25zZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2UobnNVUkxSZXNwb25zZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykK
IHsKICAgICBDRkFycmF5UmVmIGNlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2Vy
dGlmaWNhdGVDaGFpbigpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAJKHJldmlzaW9uIDE3MzI3MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjAgKzEwNCw2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KQotewotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVzcG9u
c2Uuc291cE1lc3NhZ2VGbGFncygpKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIHVpbnQzMl90IHNvdXBN
ZXNzYWdlRmxhZ3M7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3Nh
Z2VGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUlu
Zm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZp
Y2F0ZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237738</attachid>
            <date>2014-09-06 08:02:45 -0700</date>
            <delta_ts>2014-09-06 08:02:45 -0700</delta_ts>
            <desc>for bots 2</desc>
            <filename>response-no-ns-11.patch</filename>
            <type>text/plain</type>
            <size>19135</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzMxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA5LTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxpemUgUmVzb3VyY2VS
ZXNwb25zZXMgdXNpbmcgV2ViS2l0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTZXJpYWxpemF0aW9uIGlzIGZhc3RlciBhbmQgd2UgY2FuIG1v
c3RseSBhdm9pZCBoYXZpbmcgTlNVUkxSZXNwb25zZXMgaW4gd2ViIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
TG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjplbmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisKKyAgICAgICAgICAgIFNlcmlhbGl6
ZSBmcm9tIHRoZSBXZWJDb3JlIGRhdGEgaW5zdGVhZCBvZiBzZXJpYWxpemluZyBOU1VSTFJlc3Bv
bnNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25z
ZSk6CisKKyAgICAgICAgICAgIFN5bnRoZXNpemUgQ0ZVUkxSZXNwb25zZSBieSBjcmVhdGluZyBO
U1VSTFJlc3BvbnNlIG9uIENvY29hIHBsYXRmb3JtcyBzbyB3ZSBkb24ndCBuZWVkIGNvcHkgY29k
ZS4KKyAgICAgICAgICAgIFRoaXMgaGFzIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBO
U1VSTFJlc3BvbnNlIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBDRlVSTFJlc3BvbnNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0Q2VydGlmaWNhdGVDaGFpbik6CisKKyAg
ICAgICAgICAgIEF2b2lkIHVubmVjZXNzYXJ5IE5TVVJMUmVxdWVzdCBpbnN0YW50aWF0aW9uIGlu
IGRlYnVnIGJ1aWxkcy4KKwogMjAxNC0wOS0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTczMjcyKTogVHdvIGJsb2IgdGVzdHMgZmFp
bGluZyBvbiBXSzEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNzMyNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTgzNyw2
ICsxODM3LDcgQEAgX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1ZwogX19a
Tks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2
CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTN1cmxFdgogX19aTks3V2ViQ29y
ZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVFRQRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlOGxhenlJbml0RU5TMF85SW5pdExldmVsRQogX19aTks3V2ViQ29yZTIwUmVz
b3VyY2VSZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIwVHJhbnNmb3JtYXRp
b25NYXRyaXg3aW52ZXJzZUV2CiBfX1pOSzdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDdt
YXBSZWN0RVJLTlNfN0ludFJlY3RFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgJKHJldmlzaW9uIDE3MzI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXNvdXJjZUxvYWRUaW1p
bmcmKTsKKwogICAgIC8vIFRoZXNlIGFyZSBtaWxsaXNlY29uZCBkZWx0YXMgZnJvbSB0aGUgbmF2
aWdhdGlvbiBzdGFydC4KICAgICBpbnQgZG9tYWluTG9va3VwU3RhcnQ7CiAgICAgaW50IGRvbWFp
bkxvb2t1cEVuZDsKQEAgLTkxLDYgKzk0LDMwIEBAIHB1YmxpYzoKICAgICBpbnQgc2VjdXJlQ29u
bmVjdGlvblN0YXJ0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVzb3Vy
Y2VMb2FkVGltaW5nOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IGRvbWFpbkxvb2t1cFN0YXJ0OworICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwRW5k
OworICAgIGVuY29kZXIgPDwgY29ubmVjdFN0YXJ0OworICAgIGVuY29kZXIgPDwgY29ubmVjdEVu
ZDsKKyAgICBlbmNvZGVyIDw8IHJlcXVlc3RTdGFydDsKKyAgICBlbmNvZGVyIDw8IHJlc3BvbnNl
U3RhcnQ7CisgICAgZW5jb2RlciA8PCBzZWN1cmVDb25uZWN0aW9uU3RhcnQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+Citib29sIFJlc291cmNlTG9hZFRpbWluZzo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nKQoreworICAgIHJldHVybiBk
ZWNvZGVyLmRlY29kZSh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQpCisgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCisgICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKHRpbWluZy5jb25uZWN0U3RhcnQpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWlu
Zy5jb25uZWN0RW5kKQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVxdWVzdFN0
YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh0aW1pbmcucmVzcG9uc2VTdGFydCkKKyAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7Cit9
CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxNzMyNzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9v
bCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBSZXNvdXJjZVJlc3BvbnNlQmFzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBJ
bml0TGV2ZWwgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtMTg2LDYgKzE4OSw2MiBAQCBw
cml2YXRlOgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBh
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiAhKGEgPT0g
Yik7IH0KIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9p
c051bGw7CisgICAgaWYgKG1faXNOdWxsKQorICAgICAgICByZXR1cm47CisgICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKKworICAgIGVuY29kZXIgPDwgbV91cmwuc3RyaW5nKCk7CisgICAgZW5jb2Rl
ciA8PCBtX21pbWVUeXBlOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgIGVuY29kZXIgPDwgbV90ZXh0RW5jb2RpbmdOYW1l
OworICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzVGV4dDsKKyAgICBlbmNvZGVyIDw8IG1faHR0
cEhlYWRlckZpZWxkczsKKyAgICBlbmNvZGVyIDw8IG1fcmVzb3VyY2VMb2FkVGltaW5nOworICAg
IGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKKyAgICBlbmNvZGVyIDw8IG1fY29ubmVjdGlv
bklEOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNw
b25zZSkKK3sKKyAgICBBU1NFUlQocmVzcG9uc2UubV9pc051bGwpOworICAgIGJvb2wgcmVzcG9u
c2VJc051bGw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUlzTnVsbCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzcG9uc2VJc051bGwpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgU3RyaW5nIHVybDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXNwb25zZS5tX3VybCA9IFVSTChVUkwoKSwg
dXJsKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fbWltZVR5cGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGg7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShleHBlY3RlZENvbnRlbnRMZW5ndGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBl
Y3RlZENvbnRlbnRMZW5ndGg7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3Rl
eHRFbmNvZGluZ05hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNUZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRwSGVhZGVyRmllbGRzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9yZXNvdXJjZUxvYWRUaW1pbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9jb25uZWN0aW9uSUQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV9pc051bGwgPSBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNzMyNzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMyBAQCBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1v
bkhlYWRlckZpZWxkcyA9CiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJM
UmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkg
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBuc1VSTFJlc3BvbnNlKCk7CisjZWxzZQog
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNyZWF0ZUNGVVJMKCk7Ci0K
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJl
c3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KLQogICAgICAg
ICBtX2NmUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
cmV2aXNpb24gMTczMzE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNlCiAgICAgICAgIG1fbnNSZXNw
b25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDptX3VybCBN
SU1FVHlwZTptX21pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpleHBlY3RlZENvbnRlbnRM
ZW5ndGggdGV4dEVuY29kaW5nTmFtZTptX3RleHRFbmNvZGluZ05hbWVdKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIC8vIEZJWE1FOiBXZSBsb3NlIHRoZSBzdGF0dXMgdGV4dCBhbmQg
dGhlIEhUVFAgdmVyc2lvbiBoZXJlLgogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGhlYWRlckRp
Y3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICAgICBmb3IgKGF1
dG8mIGhlYWRlciA6IG1faHR0cEhlYWRlckZpZWxkcykKICAgICAgICAgW2hlYWRlckRpY3Rpb25h
cnkgc2V0T2JqZWN0OihOU1N0cmluZyAqKWhlYWRlci52YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICop
aGVhZGVyLmtleV07CkBAIC0xODUsNyArMTg3LDcgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUNvbXBhcmUoYwogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldENlcnRpZmljYXRl
Q2hhaW4oQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQogewotICAgIEFTU0VSVCghd2tDb3B5
TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4obnNVUkxSZXNwb25zZSgpKSk7CisgICAgQVNT
RVJUKCFtX25zUmVzcG9uc2UgfHwgIXdrQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWlu
KG1fbnNSZXNwb25zZS5nZXQoKSkpOwogICAgIG1fZXh0ZXJuYWxDZXJ0aWZpY2F0ZUNoYWluID0g
Y2VydGlmaWNhdGVDaGFpbjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzMy
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNw
b25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgUmVzb3VyY2VSZXNwb25zZSYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTsKIApAQCAtOTAsNiArOTMsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KSB7IH0KIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFJlc291cmNlUmVz
cG9uc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFJlc291cmNlUmVz
cG9uc2VCYXNlOjplbmNvZGUoZW5jb2Rlcik7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc291
cEZsYWdzKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgUmVzb3VyY2VSZXNw
b25zZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQoreworICAgIGlmICghUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShkZWNvZGVyLCByZXNw
b25zZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShyZXNwb25zZS5tX3NvdXBGbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewogfTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTczMzExKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMDYgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcmlhbGl6ZSBSZXNvdXJjZVJlc3BvbnNl
cyB1c2luZyBXZWJLaXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSB0aGUgV0syIHNlcmlhbGl6YXRpb24gY29kZSBmb3IgcmVzcG9u
c2VzLiBJdCBtb3ZlcyB0byB0aGUgdHlwZXMgaXRzZWxmIGluIFdlYkNvcmUgd2hlcmUgaXQgaXMK
KyAgICAgICAgY2xvc2UgdG8gdGhlIGRhdGEgYmVpbmcgc2VyaWFsaXplZCBhbmQgbGVzcyBsaWtl
bHkgdG8gZ2V0IG91dCBvZiBzeW5jLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXNwb25zZT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVkLgorCiAy
MDE0LTA5LTA0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIEdUSyBwb3J0IHNpbmNl
IHIxNzMzMDUuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTczMjcyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3NCwxMjMgKzY3
NCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICByZXR1
cm4gcmVzb3VyY2VSZXF1ZXN0LmRlY29kZVdpdGhvdXRQbGF0Zm9ybURhdGEoZGVjb2Rlcik7CiB9
CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25z
ZSkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHNob3VsZFNlcmlhbGl6ZVdlYkNv
cmVEYXRhID0gIXJlc291cmNlUmVzcG9uc2UucGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKTsK
LSAgICBlbmNvZGVyIDw8IHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhOwotI2Vsc2UKLSAgICBi
b29sIHNob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gdHJ1ZTsKLSNlbmRpZgotCi0gICAgZW5j
b2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNlUmVzcG9uc2UpOwotCi0gICAgaWYgKHNo
b3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7Ci0gICAgICAgIGJvb2wgcmVzcG9uc2VJc051bGwg
PSByZXNvdXJjZVJlc3BvbnNlLmlzTnVsbCgpOwotICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNl
SXNOdWxsOwotICAgICAgICBpZiAocmVzcG9uc2VJc051bGwpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0cmluZygpOwot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc291cmNlUmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS5o
dHRwSGVhZGVyRmllbGRzKCk7Ci0KLSAgICAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlc3BvbnNl
Lm1pbWVUeXBlKCk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXNwb25zZS50ZXh0RW5j
b2RpbmdOYW1lKCk7Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVz
b3VyY2VSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Ci0gICAgICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOwotICAgIH0KLSAgICAKLSNpZiBF
TkFCTEUoV0VCX1RJTUlORykKLSAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9
IHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCk7Ci0gICAgZW5jb2RlciA8PCB0
aW1pbmcuZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAgZW5jb2RlciA8PCB0aW1pbmcuZG9tYWluTG9v
a3VwRW5kOwotICAgIGVuY29kZXIgPDwgdGltaW5nLmNvbm5lY3RTdGFydDsKLSAgICBlbmNvZGVy
IDw8IHRpbWluZy5jb25uZWN0RW5kOwotICAgIGVuY29kZXIgPDwgdGltaW5nLnJlcXVlc3RTdGFy
dDsKLSAgICBlbmNvZGVyIDw8IHRpbWluZy5yZXNwb25zZVN0YXJ0OwotICAgIGVuY29kZXIgPDwg
dGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSNlbmRpZgotfQotCi1ib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCi17Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgYm9vbCBoYXNTZXJpYWxpemVkV2ViQ29yZURhdGE7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNTZXJpYWxpemVkV2ViQ29yZURhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZWxzZQotICAgIGJvb2wgaGFzU2VyaWFsaXplZFdlYkNvcmVEYXRhID0gdHJ1ZTsKLSNlbmRp
ZgotCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLQotICAgIGlmICghZGVjb2RlUGxh
dGZvcm1EYXRhKGRlY29kZXIsIHJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGhhc1NlcmlhbGl6ZWRXZWJDb3JlRGF0YSkgewotICAgICAgICBib29sIHJlc3BvbnNl
SXNOdWxsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlSXNOdWxsKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHJlc3BvbnNlSXNOdWxsKSB7Ci0g
ICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgdXJsOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJlc3BvbnNlLnNldFVSTChVUkwoVVJMKCksIHVybCkpOwotCi0gICAgICAgIGlu
dDMyX3QgaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0
YXR1c0NvZGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZSk7Ci0KLSAgICAgICAgSFRUUEhlYWRlck1h
cCBoZWFkZXJzOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhlYWRlcnMpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtl
eSwgaXQtPnZhbHVlKTsKLQotICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0KLSAgICAgICAgU3RyaW5nIHRl
eHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEVuY29kaW5n
TmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFRl
eHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7Ci0KLSAgICAgICAgaW50NjRfdCBjb250
ZW50TGVuZ3RoOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXNwb25zZS5zZXRFeHBlY3RlZENv
bnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7Ci0KLSAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNU
ZXh0OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGh0dHBTdGF0dXNUZXh0KSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
aHR0cFN0YXR1c1RleHQpOwotICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAg
ICBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZyA9IHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQot
ICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUodGltaW5nLmRvbWFpbkxvb2t1cEVuZCkKLSAgICAg
ICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5jb25uZWN0U3RhcnQpCi0gICAgICAgIHx8ICFk
ZWNvZGVyLmRlY29kZSh0aW1pbmcuY29ubmVjdEVuZCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKHRpbWluZy5yZXF1ZXN0U3RhcnQpCi0gICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSh0aW1p
bmcucmVzcG9uc2VTdGFydCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKHRpbWluZy5zZWN1
cmVDb25uZWN0aW9uU3RhcnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAg
IHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAgICAgZW5j
b2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNlRXJyb3IpOwpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTczMjcx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTEsMTMgKzI1MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U+IHsKLSAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZv
cm1EYXRhKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDE3MzI3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsNDIgKzE0Myw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjpkZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIGJvb2wgcmVz
cG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNlLnBsYXRmb3JtUmVzcG9uc2VJc1VwVG9E
YXRlKCkgJiYgcmVzb3VyY2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7Ci0gICAgZW5jb2RlciA8
PCByZXNwb25zZUlzUHJlc2VudDsKLQotICAgIGlmICghcmVzcG9uc2VJc1ByZXNlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkg
PSBhZG9wdENGKFdLTlNVUkxSZXNwb25zZUNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
KHJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYo
KSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotfQotCi1i
b29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9u
c2UpCi17Ci0gICAgYm9vbCByZXNwb25zZUlzUHJlc2VudDsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFyZXNwb25zZUlzUHJlc2VudCkgewotICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5OwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVj
b2RlciwgZGljdGlvbmFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJldGFpblB0
cjxOU1VSTFJlc3BvbnNlPiBuc1VSTFJlc3BvbnNlID0gV0tOU1VSTFJlc3BvbnNlRnJvbVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlw
ZVJlZigpKTsKLQotICAgIGlmICghbnNVUkxSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobnNVUkxSZXNwb25z
ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0
aWZpY2F0ZUluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKICAgICBDRkFycmF5UmVmIGNlcnRpZmlj
YXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpOwpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAJKHJldmlzaW9uIDE3MzI3MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9z
b3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
MjAgKzEwNCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotewotICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVzcG9uc2Uuc291cE1lc3NhZ2VGbGFncygpKTsKLX0K
LQotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJl
c3BvbnNlKQotewotICAgIHVpbnQzMl90IHNvdXBNZXNzYWdlRmxhZ3M7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVz
c2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZv
aWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKICAg
ICBpZiAoIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>