<?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>71760</bug_id>
          
          <creation_ts>2011-11-07 19:03:29 -0800</creation_ts>
          <short_desc>[chromium] Remove 6 exit time destructors and 6 static initializers</short_desc>
          <delta_ts>2011-11-08 10:20:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nico Weber">thakis</reporter>
          <assigned_to name="Nico Weber">thakis</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497678</commentid>
    <comment_count>0</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-07 19:03:29 -0800</bug_when>
    <thetext>[chromium] Remove 6 exit time destructors and 6 static initializers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497679</commentid>
    <comment_count>1</comment_count>
      <attachid>113976</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-07 19:05:09 -0800</bug_when>
    <thetext>Created attachment 113976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497682</commentid>
    <comment_count>2</comment_count>
      <attachid>113976</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 19:20:16 -0800</bug_when>
    <thetext>Comment on attachment 113976
Patch

Attachment 113976 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10338847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497684</commentid>
    <comment_count>3</comment_count>
      <attachid>113980</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-07 19:23:20 -0800</bug_when>
    <thetext>Created attachment 113980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497686</commentid>
    <comment_count>4</comment_count>
      <attachid>113980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 19:37:06 -0800</bug_when>
    <thetext>Comment on attachment 113980
Patch

Attachment 113980 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10333909</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497687</commentid>
    <comment_count>5</comment_count>
      <attachid>113981</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-07 19:38:23 -0800</bug_when>
    <thetext>Created attachment 113981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497702</commentid>
    <comment_count>6</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-07 20:31:41 -0800</bug_when>
    <thetext>See http://crbug.com/101600 for the tracking bug.

andersca did this for mac webkit in wk issue 69586.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498095</commentid>
    <comment_count>7</comment_count>
      <attachid>113981</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-11-08 08:29:06 -0800</bug_when>
    <thetext>Comment on attachment 113981
Patch

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

r+ with nits.

&gt; Source/WebCore/bindings/v8/ScriptGCEvent.cpp:41
&gt;  #include &lt;wtf/CurrentTime.h&gt;
&gt;  
&gt; +
&gt;  namespace WebCore {

Spurious newline?

&gt; Source/WebCore/bindings/v8/ScriptGCEvent.cpp:45
&gt; -ScriptGCEvent::GCEventListeners ScriptGCEvent::s_eventListeners;
&gt; +typedef Vector&lt;ScriptGCEventListener*&gt; GCEventListeners;
&gt; +static GCEventListeners&amp; sEventListeners()
&gt; +{

No need for the leading &apos;s&apos; in the function name.

&gt; Source/WebCore/bindings/v8/V8Proxy.cpp:774
&gt; +
&gt; +const V8Extensions&amp; V8Proxy::extensions()
&gt; +{
&gt; +    return staticExtensionsList();
&gt;  }

Can we combine this and staticExtensionsList()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498111</commentid>
    <comment_count>8</comment_count>
      <attachid>113981</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-08 08:50:01 -0800</bug_when>
    <thetext>Comment on attachment 113981
Patch

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

Thanks!

&gt;&gt; Source/WebCore/bindings/v8/ScriptGCEvent.cpp:41
&gt;&gt;  namespace WebCore {
&gt; 
&gt; Spurious newline?

Fixed.

&gt;&gt; Source/WebCore/bindings/v8/ScriptGCEvent.cpp:45
&gt;&gt; +{
&gt; 
&gt; No need for the leading &apos;s&apos; in the function name.

Fixed.

&gt;&gt; Source/WebCore/bindings/v8/V8Proxy.cpp:774
&gt;&gt;  }
&gt; 
&gt; Can we combine this and staticExtensionsList()?

Not easily: This function returns a const reference, but in some places in this function, a non-const reference is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498113</commentid>
    <comment_count>9</comment_count>
      <attachid>114084</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-11-08 08:50:25 -0800</bug_when>
    <thetext>Created attachment 114084
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498212</commentid>
    <comment_count>10</comment_count>
      <attachid>114084</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 10:20:35 -0800</bug_when>
    <thetext>Comment on attachment 114084
Patch for landing

Clearing flags on attachment: 114084

Committed r99588: &lt;http://trac.webkit.org/changeset/99588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498213</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 10:20:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113976</attachid>
            <date>2011-11-07 19:05:09 -0800</date>
            <delta_ts>2011-11-07 19:23:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71760-20111107190508.patch</filename>
            <type>text/plain</type>
            <size>18660</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzOTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDEyMTUyMGUzNWUyODdi
ZDBhNTdiYmNmNjA5ZDA0M2EwYWM1ZTVjLi5mYTM2MjQxOTIxYjkxZjhmOWY0MjA0YjhlNDUwODk1
ZTRlZTYzMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEtMDcgIE5pY28g
V2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IDYgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGFuZCA2IHN0YXRpYyBpbml0aWFsaXplcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gdGhpcyBieSBtb3Zp
bmcgZ2xvYmFsIHN0YXRpY3MgaW50byBmdW5jdGlvbi1sb2NhbCBzdGF0aWNzLCBhbmQgdXNpbmcK
KyAgICAgICAgREVGSU5FX0xPQ0FMX1NUQVRJQyB0byBsZWFrIHRoZW0uIFNpbmNlIHRoaXMgY29k
ZSBpcyBhY2Nlc3NlZCBvbiBhIHNpbmdsZQorICAgICAgICB0aHJlYWQsIHRoaXMgaXMgYSBzYWZl
IGNoYW5nZSB0byBtYWtlLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgc28gbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZl
bnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NF
dmVudC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGljVGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6d2Vha1RlbXBs
YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdGF0aWNOUE9iamVjdE1hcCk6CisgICAgICAgIChXZWJDb3JlOjp3
ZWFrTlBPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RhdGljRXh0ZW5zaW9uc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpleHRlbnNpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvbnBy
dW50aW1lLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
OjpyZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVu
c2lvbik6CisKIDIwMTEtMTEtMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29t
PgogCiAgICAgICAgIEZpeCBzb21lIHN0eWxlIGlzc3VlcyBpbiBJbWFnZUJ1ZmZlci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCmluZGV4IDU1YTgwM2Yy
YjZhYWIwMDM0ZWQ2YTgwY2ZiNDk4ZTNmM2JjODlkM2YuLjYzYWM0NGNhMDY0NzdlZmUzM2Q3ZTdh
OTFmNjQ0ZjUyNmYxYjM0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEdDRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEdDRXZlbnQuY3BwCkBAIC0zNywzMCArMzcsMzcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0R0NFdmVudDo6R0NFdmVu
dExpc3RlbmVycyBTY3JpcHRHQ0V2ZW50OjpzX2V2ZW50TGlzdGVuZXJzOwordHlwZWRlZiBWZWN0
b3I8U2NyaXB0R0NFdmVudExpc3RlbmVyKj4gR0NFdmVudExpc3RlbmVyczsKK3N0YXRpYyBHQ0V2
ZW50TGlzdGVuZXJzJiBzRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoR0NFdmVudExpc3RlbmVycywgZXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICByZXR1cm4gZXZl
bnRMaXN0ZW5lcnM7Cit9CisKIGRvdWJsZSBTY3JpcHRHQ0V2ZW50OjpzX3N0YXJ0VGltZSA9IDAu
MDsKIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpzX3VzZWRIZWFwU2l6ZSA9IDA7CiAKIHZvaWQgU2Ny
aXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqIGV2ZW50
TGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKGV2ZW50TGlzdGVuZXIpOwotICAgIGlmIChzX2V2ZW50
TGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgIGlmIChzRXZlbnRMaXN0ZW5lcnMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgdjg6OlY4OjpBZGRHQ1Byb2xvZ3VlQ2FsbGJhY2soU2NyaXB0R0NFdmVu
dDo6Z2NQcm9sb2d1ZUNhbGxiYWNrKTsKICAgICAgICAgdjg6OlY4OjpBZGRHQ0VwaWxvZ3VlQ2Fs
bGJhY2soU2NyaXB0R0NFdmVudDo6Z2NFcGlsb2d1ZUNhbGxiYWNrKTsKICAgICB9Ci0gICAgc19l
dmVudExpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgc0V2ZW50TGlzdGVuZXJz
KCkuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOwogfQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewog
ICAgIEFTU0VSVChldmVudExpc3RlbmVyKTsKLSAgICBBU1NFUlQoIXNfZXZlbnRMaXN0ZW5lcnMu
aXNFbXB0eSgpKTsKLSAgICBzaXplX3QgaSA9IHNfZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudExp
c3RlbmVyKTsKKyAgICBBU1NFUlQoIXNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSk7CisgICAg
c2l6ZV90IGkgPSBzRXZlbnRMaXN0ZW5lcnMoKS5maW5kKGV2ZW50TGlzdGVuZXIpOwogICAgIEFT
U0VSVChpICE9IG5vdEZvdW5kKTsKLSAgICBzX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShpKTsKLSAg
ICBpZiAoc19ldmVudExpc3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICBzRXZlbnRMaXN0ZW5lcnMo
KS5yZW1vdmUoaSk7CisgICAgaWYgKHNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSkgewogICAg
ICAgICB2ODo6Vjg6OlJlbW92ZUdDUHJvbG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY1By
b2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6Vjg6OlJlbW92ZUdDRXBpbG9ndWVDYWxsYmFj
ayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOwogICAgIH0KQEAgLTkyLDcgKzk5
LDcgQEAgdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2sodjg6OkdDVHlwZSB0
eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWcKIHsKICAgICBkb3VibGUgZW5kVGltZSA9IFdU
Rjo6Y3VycmVudFRpbWVNUygpOwogICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHNfdXNlZEhl
YXBTaXplIC0gZ2V0VXNlZEhlYXBTaXplKCk7Ci0gICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5l
cnMoc19ldmVudExpc3RlbmVycyk7CisgICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5lcnMoc0V2
ZW50TGlzdGVuZXJzKCkpOwogICAgIGZvciAoR0NFdmVudExpc3RlbmVyczo6aXRlcmF0b3IgaSA9
IGxpc3RlbmVycy5iZWdpbigpOyBpICE9IGxpc3RlbmVycy5lbmQoKTsgKytpKQogICAgICAgICAo
KmkpLT5kaWRHQyhzX3N0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oCmluZGV4IDJmZmQ5NDBmOTM0
NmJjNmE1YmZhZGQ4ZjY0ZjliOWQ0ZmM3ZmE3ZTYuLjA2NDRhODUwYjllMTdiODk4NTFmZWI4ZDJm
ZDQ4YmViNjU3NjU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2
ZW50LmgKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SGVhcFNpemUoc2l6ZV90Jiwgc2l6ZV90Jiwgc2l6ZV90Jik7CiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgVmVjdG9yPFNjcmlwdEdDRXZlbnRMaXN0ZW5lcio+IEdDRXZlbnRMaXN0ZW5lcnM7Ci0gICAg
c3RhdGljIEdDRXZlbnRMaXN0ZW5lcnMgc19ldmVudExpc3RlbmVyczsKICAgICBzdGF0aWMgZG91
YmxlIHNfc3RhcnRUaW1lOwogICAgIHN0YXRpYyBzaXplX3Qgc191c2VkSGVhcFNpemU7CiAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDY5MTUwNTgxYWNk
OTJiNzkwZDBlMzljMDdlZjZlMzVhODVlNTA0Y2MuLmU0M2QyN2U2NDA5ZGVlMjVhOGFlZTcyNjk3
MGE0N2U1MjYwMDVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCkBAIC0xNjMsMTUgKzE2MywyMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJ
bnZva2VEZWZhdWx0SGFuZGxlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogc3RhdGljIHZv
aWQgd2Vha1RlbXBsYXRlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCog
cGFyYW1ldGVyKTsKIAogLy8gTlBJZGVudGlmaWVyIGlzIFByaXZhdGVJZGVudGlmaWVyKi4KLXN0
YXRpYyBXZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gc3RhdGljVGVtcGxhdGVNYXAoJndlYWtUZW1wbGF0ZUNhbGxiYWNrKTsKK3N0YXRpYyBX
ZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZT4m
IHN0YXRpY1RlbXBsYXRlTWFwKCkKK3sKKyAgICB0eXBlZGVmIFdlYWtSZWZlcmVuY2VNYXA8UHJp
dmF0ZUlkZW50aWZpZXIsIHY4OjpGdW5jdGlvblRlbXBsYXRlPiBNYXBUeXBlOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoTWFwVHlwZSwgdGVtcGxhdGVNYXAsICgmd2Vha1RlbXBsYXRlQ2FsbGJh
Y2spKTsKKyAgICByZXR1cm4gdGVtcGxhdGVNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtUZW1w
bGF0ZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJh
bWV0ZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxQcml2YXRlSWRlbnRpZmllcio+KHBhcmFtZXRlcik7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIp
OwotICAgIEFTU0VSVChzdGF0aWNUZW1wbGF0ZU1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7Cisg
ICAgQVNTRVJUKHN0YXRpY1RlbXBsYXRlTWFwKCkuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0g
ICAgc3RhdGljVGVtcGxhdGVNYXAuZm9yZ2V0KGlkZW50aWZpZXIpOworICAgIHN0YXRpY1RlbXBs
YXRlTWFwKCkuZm9yZ2V0KGlkZW50aWZpZXIpOwogfQogCiAKQEAgLTIwMSwxNCArMjA2LDE0IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAKICAgICBpZiAoa2V5LT5Jc1N0cmluZygpICYmIG5w
T2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZCAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2Qo
bnBPYmplY3QsIGlkZW50aWZpZXIpKSB7CiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9
IHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7Ci0gICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gc3Rh
dGljVGVtcGxhdGVNYXAuZ2V0KGlkKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBzdGF0aWNUZW1wbGF0ZU1hcCgpLmdldChp
ZCk7CiAgICAgICAgIC8vIENhY2hlIHRlbXBsYXRlcyB1c2luZyBpZGVudGlmaWVyIGFzIHRoZSBr
ZXkuCiAgICAgICAgIGlmIChmdW5jdGlvblRlbXBsYXRlLklzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgbmV3IHRlbXBsYXRlLgogICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpOwogICAg
ICAgICAgICAgdGVtcC0+U2V0Q2FsbEhhbmRsZXIobnBPYmplY3RNZXRob2RIYW5kbGVyLCBrZXkp
OwogICAgICAgICAgICAgZnVuY3Rpb25UZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHRlbXApOwotICAgICAgICAgICAgc3RhdGljVGVtcGxhdGVNYXAu
c2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKKyAgICAgICAgICAgIHN0YXRpY1RlbXBsYXRlTWFw
KCkuc2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZ1
bmN0aW9uVGVtcGxhdGUgY2FjaGVzIGZ1bmN0aW9uIGZvciBlYWNoIGNvbnRleHQuCkBAIC0zNDEs
MTcgKzM0NiwyMSBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBPYmplY3RJbmRleGVkUHJvcGVy
dHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mCiAKIHN0YXRpYyB2b2lkIHdlYWtO
UE9iamVjdENhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRl
cik7CiAKLXN0YXRpYyBET01XcmFwcGVyTWFwPE5QT2JqZWN0PiBzdGF0aWNOUE9iamVjdE1hcCgm
d2Vha05QT2JqZWN0Q2FsbGJhY2spOworc3RhdGljIERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+JiBz
dGF0aWNOUE9iamVjdE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01XcmFwcGVy
TWFwPE5QT2JqZWN0PiwgbnBPYmplY3RNYXAsICgmd2Vha05QT2JqZWN0Q2FsbGJhY2spKTsKKyAg
ICByZXR1cm4gbnBPYmplY3RNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtOUE9iamVjdENhbGxi
YWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7
CiAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gc3RhdGljX2Nhc3Q8TlBPYmplY3QqPihwYXJhbWV0
ZXIpOwotICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhucE9iamVjdCkpOwor
ICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcCgpLmNvbnRhaW5zKG5wT2JqZWN0KSk7CiAgICAg
QVNTRVJUKG5wT2JqZWN0KTsKIAogICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZv
cmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmplY3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0IGNhbiBj
YWxsIEZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QsIHdoaWNoCiAgICAgLy8gdXNlcyB0aGUgdGFi
bGUgYXMgd2VsbC4KLSAgICBzdGF0aWNOUE9iamVjdE1hcC5mb3JnZXQobnBPYmplY3QpOworICAg
IHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG5wT2JqZWN0KTsKIAogICAgIGlmIChfTlBOX0lz
QWxpdmUobnBPYmplY3QpKQogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QobnBPYmplY3QpOwpA
QCAtMzcxLDggKzM4MCw4IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgfQogCiAgICAg
Ly8gSWYgd2UndmUgYWxyZWFkeSB3cmFwcGVkIHRoaXMgb2JqZWN0LCBqdXN0IHJldHVybiBpdC4K
LSAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHN0YXRpY05QT2JqZWN0TWFwLmdldChvYmpl
Y3QpKTsKKyAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAoKS5jb250YWlucyhvYmplY3QpKQorICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc3RhdGljTlBPYmplY3RNYXAo
KS5nZXQob2JqZWN0KSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNyZWF0ZSBhIFdyYXBw
ZXIgdHlwZSBhcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0LiBJdCBoYXMgdHdvIGludGVybmFsIGZp
ZWxkcywgZmllbGQgMCBpcyB0aGUgd3JhcHBlZAogICAgIC8vIHBvaW50ZXIsIGFuZCBmaWVsZCAx
IGlzIHRoZSB0eXBlLiBUaGVyZSBzaG91bGQgYmUgYW4gYXBpIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB1bnVzZWQgdHlwZSBpZC4gVGhlIHNhbWUgV3JhcHBlciB0eXBlCkBAIC00MDEsMTggKzQxMCwx
OCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdChOUE9i
amVjdCogb2JqZWN0LCBOUE9iamVjdCogcm9vdAogCiAgICAgLy8gTWFpbnRhaW4gYSB3ZWFrIHBv
aW50ZXIgZm9yIHY4IHNvIHdlIGNhbiBjbGVhbnVwIHRoZSBvYmplY3QuCiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd2Vha1JlZiA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcodmFsdWUpOwotICAgIHN0YXRpY05QT2JqZWN0TWFwLnNldChvYmplY3QsIHdlYWtSZWYpOwor
ICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd2Vha1JlZik7CiAKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCog
b2JqZWN0KQogewotICAgIGlmIChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhvYmplY3QpKSB7
CisgICAgaWYgKHN0YXRpY05QT2JqZWN0TWFwKCkuY29udGFpbnMob2JqZWN0KSkgewogICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcC5nZXQob2JqZWN0KSk7CisgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcCgpLmdldChvYmpl
Y3QpKTsKICAgICAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGhhbmRsZSwgbnBPYmpl
Y3RUeXBlSW5mbygpLCAwKTsKLSAgICAgICAgc3RhdGljTlBPYmplY3RNYXAuZm9yZ2V0KG9iamVj
dCk7CisgICAgICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG9iamVjdCk7CiAgICAgICAg
IF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZjYxYmQ5ZmU1MjkwODJmMDZlYTFhZGEyY2VhYjg4NDI4
NzQwNWRhYS4uMTA4NzkwNGY5N2EwYWQ2NDRhOGM4Y2ExOWM2YzVjOTM1MGUyZjUzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTc2LDggKzc2LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gU3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBleHRlbnNp
b25zCi1WOEV4dGVuc2lvbnMgVjhQcm94eTo6bV9leHRlbnNpb25zOworc3RhdGljIFY4RXh0ZW5z
aW9ucyYgc3RhdGljRXh0ZW5zaW9uc0xpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VjhFeHRlbnNpb25zLCBleHRlbnNpb25zLCAoKSk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnM7Cit9
CiAKIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIApAQCAtNzUwLDggKzc1Myw5IEBAIHZvaWQg
VjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9u
KQogCiBib29sIFY4UHJveHk6OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lv
biogZXh0ZW5zaW9uKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHRlbnNpb25z
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2V4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9u
KQorICAgIGNvbnN0IFY4RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGV4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9uKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC03NjEsNyArNzY1LDEyIEBAIGJvb2wgVjhQcm94eTo6cmVnaXN0ZXJl
ZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24pCiB2b2lkIFY4UHJveHk6
OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbikKIHsKICAgICByZWdp
c3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNpb24pOwotICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQo
ZXh0ZW5zaW9uKTsKKyAgICBzdGF0aWNFeHRlbnNpb25zTGlzdCgpLmFwcGVuZChleHRlbnNpb24p
OworfQorCitjb25zdCBWOEV4dGVuc2lvbnMmIFY4UHJveHk6OmV4dGVuc2lvbnMoKQoreworICAg
IHJldHVybiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpOwogfQogCiBib29sIFY4UHJveHk6OnNldENv
bnRleHREZWJ1Z0lkKGludCBkZWJ1Z0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CmluZGV4IDE3ZjMyZTQ2MDNiZmU2OTJiZDU1NjVmZGRlMWUzMTNiMTg5M2Y5NTEuLjQ1ZjJjZTZh
MmY4YWMxZmE1NjQ0OWQ4N2I2YTU4NzliZTBiYTIwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmgKQEAgLTI3NCw3ICsyNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5z
aW9uKik7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFY4RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucygp
IHsgcmV0dXJuIG1fZXh0ZW5zaW9uczsgfQorICAgICAgICBzdGF0aWMgY29uc3QgVjhFeHRlbnNp
b25zJiBleHRlbnNpb25zKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IGFuIHVuc2FmZSBhdHRlbXB0
IHRvIGFjY2VzcyB0aGUgZ2l2ZW4gZnJhbWUgb24gdGhlIGNvbnNvbGUuCiAgICAgICAgIHN0YXRp
YyB2b2lkIHJlcG9ydFVuc2FmZUFjY2Vzc1RvKEZyYW1lKiB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAKaW5kZXggYTBlY2Q1M2I2MDllMjc0ZTgwMTM3YzBk
NjliNTEzYmNjYmM2ODhiNS4uOGQ4MGNmOTMzMTg2ZTg1NDdjMTg1MTgzZDdlNzQ4NGJjZTFlODRh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCkBAIC0zNTYsNjcg
KzM1Niw3NSBAQCB0eXBlZGVmIFdURjo6SGFzaE1hcDxOUE9iamVjdCosIE5QT2JqZWN0Kj4gTlBP
YmplY3RNYXA7CiB0eXBlZGVmIFdURjo6SGFzaE1hcDxOUE9iamVjdCosIE5QT2JqZWN0U2V0Kj4g
TlBSb290T2JqZWN0TWFwOwogCiAvLyBBIG1hcCBvZiBsaXZlIE5QT2JqZWN0cyB3aXRoIHBvaW50
ZXJzIHRvIHRoZWlyIFJvb3RzLgotTlBPYmplY3RNYXAgbGl2ZU9iamVjdE1hcDsKK3N0YXRpYyBO
UE9iamVjdE1hcCYgbGl2ZU9iamVjdE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChO
UE9iamVjdE1hcCwgb2JqZWN0TWFwLCAoKSk7CisgICAgcmV0dXJuIG9iamVjdE1hcDsKK30KIAog
Ly8gQSBtYXAgb2YgdGhlIHJvb3Qgb2JqZWN0cyBhbmQgdGhlIGxpc3Qgb2YgTlBPYmplY3RzCiAv
LyBhc3NvY2lhdGVkIHdpdGggdGhhdCBvYmplY3QuCi1OUFJvb3RPYmplY3RNYXAgcm9vdE9iamVj
dE1hcDsKK3N0YXRpYyBOUFJvb3RPYmplY3RNYXAmIHJvb3RPYmplY3RNYXAoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoTlBSb290T2JqZWN0TWFwLCBvYmplY3RNYXAsICgpKTsKKyAgICBy
ZXR1cm4gb2JqZWN0TWFwOworfQogCiB2b2lkIF9OUE5fUmVnaXN0ZXJPYmplY3QoTlBPYmplY3Qq
IG5wT2JqZWN0LCBOUE9iamVjdCogb3duZXIpCiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKIAog
ICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcmVnaXN0ZXJlZC4KLSAgICBpZiAobGl2ZU9iamVjdE1h
cC5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwLmVuZCgpKQorICAgIGlmIChsaXZlT2Jq
ZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVjdE1hcCgpLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW93bmVyKSB7CiAgICAgICAgIC8vIFJlZ2lzdGVyaW5nIGEg
bmV3IG93bmVyIG9iamVjdC4KLSAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAuZmluZChucE9i
amVjdCkgPT0gcm9vdE9iamVjdE1hcC5lbmQoKSk7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAuc2V0
KG5wT2JqZWN0LCBuZXcgTlBPYmplY3RTZXQoKSk7CisgICAgICAgIEFTU0VSVChyb290T2JqZWN0
TWFwKCkuZmluZChucE9iamVjdCkgPT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKTsKKyAgICAgICAg
cm9vdE9iamVjdE1hcCgpLnNldChucE9iamVjdCwgbmV3IE5QT2JqZWN0U2V0KCkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEFsd2F5cyBhc3NvY2lhdGUgdGhpcyBvYmplY3Qgd2l0aCBpdCdz
IHRvcC1tb3N0IHBhcmVudC4KICAgICAgICAgLy8gU2luY2Ugd2UgYWx3YXlzIGZsYXR0ZW4sIHdl
IG9ubHkgaGF2ZSB0byBsb29rIHVwIG9uZSBsZXZlbC4KLSAgICAgICAgTlBPYmplY3RNYXA6Oml0
ZXJhdG9yIG93bmVyRW50cnkgPSBsaXZlT2JqZWN0TWFwLmZpbmQob3duZXIpOworICAgICAgICBO
UE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJFbnRyeSA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG93
bmVyKTsKICAgICAgICAgTlBPYmplY3QqIHBhcmVudCA9IDA7Ci0gICAgICAgIGlmIChsaXZlT2Jq
ZWN0TWFwLmVuZCgpICE9IG93bmVyRW50cnkpCisgICAgICAgIGlmIChsaXZlT2JqZWN0TWFwKCku
ZW5kKCkgIT0gb3duZXJFbnRyeSkKICAgICAgICAgICAgIHBhcmVudCA9IG93bmVyRW50cnktPnNl
Y29uZDsKIAogICAgICAgICBpZiAocGFyZW50KQogICAgICAgICAgICAgb3duZXIgPSBwYXJlbnQ7
Ci0gICAgICAgIEFTU0VSVChyb290T2JqZWN0TWFwLmZpbmQobnBPYmplY3QpID09IHJvb3RPYmpl
Y3RNYXAuZW5kKCkpOwotICAgICAgICBpZiAocm9vdE9iamVjdE1hcC5maW5kKG93bmVyKSAhPSBy
b290T2JqZWN0TWFwLmVuZCgpKQotICAgICAgICAgICAgcm9vdE9iamVjdE1hcC5nZXQob3duZXIp
LT5hZGQobnBPYmplY3QpOworICAgICAgICBBU1NFUlQocm9vdE9iamVjdE1hcCgpLmZpbmQobnBP
YmplY3QpID09IHJvb3RPYmplY3RNYXAoKS5lbmQoKSk7CisgICAgICAgIGlmIChyb290T2JqZWN0
TWFwKCkuZmluZChvd25lcikgIT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKQorICAgICAgICAgICAg
cm9vdE9iamVjdE1hcCgpLmdldChvd25lciktPmFkZChucE9iamVjdCk7CiAgICAgfQogCi0gICAg
QVNTRVJUKGxpdmVPYmplY3RNYXAuZmluZChucE9iamVjdCkgPT0gbGl2ZU9iamVjdE1hcC5lbmQo
KSk7Ci0gICAgbGl2ZU9iamVjdE1hcC5zZXQobnBPYmplY3QsIG93bmVyKTsKKyAgICBBU1NFUlQo
bGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpID09IGxpdmVPYmplY3RNYXAoKS5lbmQoKSk7
CisgICAgbGl2ZU9iamVjdE1hcCgpLnNldChucE9iamVjdCwgb3duZXIpOwogfQogCiB2b2lkIF9O
UE5fVW5yZWdpc3Rlck9iamVjdChOUE9iamVjdCogbnBPYmplY3QpCiB7CiAgICAgQVNTRVJUKG5w
T2JqZWN0KTsKLSAgICBBU1NFUlQobGl2ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KSAhPSBsaXZl
T2JqZWN0TWFwLmVuZCgpKTsKKyAgICBBU1NFUlQobGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmpl
Y3QpICE9IGxpdmVPYmplY3RNYXAoKS5lbmQoKSk7CiAKICAgICBOUE9iamVjdCogb3duZXIgPSAw
OwotICAgIGlmIChsaXZlT2JqZWN0TWFwLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAu
ZW5kKCkpCi0gICAgICAgIG93bmVyID0gbGl2ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KS0+c2Vj
b25kOworICAgIGlmIChsaXZlT2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVj
dE1hcCgpLmVuZCgpKQorICAgICAgICBvd25lciA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2Jq
ZWN0KS0+c2Vjb25kOwogCiAgICAgaWYgKCFvd25lcikgewogICAgICAgICAvLyBVbnJlZ2lzdGVy
aW5nIGEgb3duZXIgb2JqZWN0OyBhbHNvIHVucmVnaXN0ZXIgaXQncyBkZXNjZW5kYW50cy4KLSAg
ICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAuZmluZChucE9iamVjdCkgIT0gcm9vdE9iamVjdE1h
cC5lbmQoKSk7Ci0gICAgICAgIE5QT2JqZWN0U2V0KiBzZXQgPSByb290T2JqZWN0TWFwLmdldChu
cE9iamVjdCk7CisgICAgICAgIEFTU0VSVChyb290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkg
IT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKTsKKyAgICAgICAgTlBPYmplY3RTZXQqIHNldCA9IHJv
b3RPYmplY3RNYXAoKS5nZXQobnBPYmplY3QpOwogICAgICAgICB3aGlsZSAoc2V0LT5zaXplKCkg
PiAwKSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgaW50IHNpemUgPSBzZXQtPnNpemUo
KTsKICNlbmRpZgogICAgICAgICAgICAgTlBPYmplY3QqIHN1Yl9vYmplY3QgPSAqKHNldC0+YmVn
aW4oKSk7CiAgICAgICAgICAgICAvLyBUaGUgc3ViLW9iamVjdCBzaG91bGQgbm90IGJlIGEgb3du
ZXIhCi0gICAgICAgICAgICBBU1NFUlQocm9vdE9iamVjdE1hcC5maW5kKHN1Yl9vYmplY3QpID09
IHJvb3RPYmplY3RNYXAuZW5kKCkpOworICAgICAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAo
KS5maW5kKHN1Yl9vYmplY3QpID09IHJvb3RPYmplY3RNYXAoKS5lbmQoKSk7CiAKICAgICAgICAg
ICAgIC8vIEZpcnN0LCB1bnJlZ2lzdGVyIHRoZSBvYmplY3QuCiAgICAgICAgICAgICBzZXQtPnJl
bW92ZShzdWJfb2JqZWN0KTsKLSAgICAgICAgICAgIGxpdmVPYmplY3RNYXAucmVtb3ZlKHN1Yl9v
YmplY3QpOworICAgICAgICAgICAgbGl2ZU9iamVjdE1hcCgpLnJlbW92ZShzdWJfb2JqZWN0KTsK
IAogICAgICAgICAgICAgLy8gU2NyaXB0IG9iamVjdHMgaG9sZCBhIHJlZmVybmNlIHRvIHRoZWly
IERPTVdpbmRvdyosIHdoaWNoIGlzIGdvaW5nIGF3YXkgaWYKICAgICAgICAgICAgIC8vIHdlJ3Jl
IHVucmVnaXN0ZXJpbmcgdGhlIGFzc29jaWF0ZWQgb3duZXIgTlBPYmplY3QuIENsZWFyIGl0IG91
dC4KQEAgLTQzMSwyMyArNDM5LDIzIEBAIHZvaWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2Jq
ZWN0KiBucE9iamVjdCkKICAgICAgICAgICAgIEFTU0VSVChzZXQtPnNpemUoKSA8IHNpemUpOwog
ICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBzZXQ7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAucmVt
b3ZlKG5wT2JqZWN0KTsKKyAgICAgICAgcm9vdE9iamVjdE1hcCgpLnJlbW92ZShucE9iamVjdCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTlBSb290T2JqZWN0TWFwOjppdGVyYXRvciBvd25lckVu
dHJ5ID0gcm9vdE9iamVjdE1hcC5maW5kKG93bmVyKTsKLSAgICAgICAgaWYgKG93bmVyRW50cnkg
IT0gcm9vdE9iamVjdE1hcC5lbmQoKSkgeworICAgICAgICBOUFJvb3RPYmplY3RNYXA6Oml0ZXJh
dG9yIG93bmVyRW50cnkgPSByb290T2JqZWN0TWFwKCkuZmluZChvd25lcik7CisgICAgICAgIGlm
IChvd25lckVudHJ5ICE9IHJvb3RPYmplY3RNYXAoKS5lbmQoKSkgewogICAgICAgICAgICAgTlBP
YmplY3RTZXQqIGxpc3QgPSBvd25lckVudHJ5LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NFUlQo
bGlzdC0+ZmluZChucE9iamVjdCkgIT0gbGlzdC0+ZW5kKCkpOwogICAgICAgICAgICAgbGlzdC0+
cmVtb3ZlKG5wT2JqZWN0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxpdmVPYmplY3RNYXAu
cmVtb3ZlKG5wT2JqZWN0KTsKKyAgICBsaXZlT2JqZWN0TWFwKCkucmVtb3ZlKG5wT2JqZWN0KTsK
ICAgICBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KG5wT2JqZWN0KTsKIH0KIAogYm9vbCBfTlBO
X0lzQWxpdmUoTlBPYmplY3QqIG5wT2JqZWN0KQogewotICAgIHJldHVybiBsaXZlT2JqZWN0TWFw
LmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAuZW5kKCk7CisgICAgcmV0dXJuIGxpdmVP
YmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwKCkuZW5kKCk7CiB9CiAK
IH0gIC8vIGV4dGVybiAiQyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAppbmRleCAyNDA0OTRmNTk3MDA2NWVhNmQ2Yzcx
OGM3ZDNmYmY5YzAyNGVmMWJmLi43ODlhOGZhZjVjNzY3YjEzOWE1ZDc4Yjg0MTg5NjRhYjE5ZDg5
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRh
dGFDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVn
aW5EYXRhQ2hyb21pdW0uY3BwCkBAIC02MywyNCArNjMsMjggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcmVmcmVzaDsKIH07CiAKLXN0YXRpYyBQbHVnaW5DYWNoZSBwbHVnaW5DYWNoZTsKK3N0YXRp
YyBQbHVnaW5DYWNoZSYgcGx1Z2luQ2FjaGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UGx1Z2luQ2FjaGUsIGNhY2hlLCAoKSk7CisgICAgcmV0dXJuIGNhY2hlKCk7Cit9CiAKIHZvaWQg
UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSopCiB7Ci0gICAgY29uc3QgVmVjdG9y
PFBsdWdpbkluZm8+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUucGx1Z2lucygpOworICAgIGNvbnN0
IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlKCkucGx1Z2lucygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkKICAgICAgICAg
bV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ldKTsKIH0KIAogdm9pZCBQbHVnaW5EYXRhOjpyZWZy
ZXNoKCkKIHsKLSAgICBwbHVnaW5DYWNoZS5yZXNldCh0cnVlKTsKLSAgICBwbHVnaW5DYWNoZS5w
bHVnaW5zKCk7ICAvLyBGb3JjZSB0aGUgcGx1Z2lucyB0byBiZSByZWxvYWRlZCBub3cuCisgICAg
cGx1Z2luQ2FjaGUoKS5yZXNldCh0cnVlKTsKKyAgICBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsg
Ly8gRm9yY2UgdGhlIHBsdWdpbnMgdG8gYmUgcmVsb2FkZWQgbm93LgogfQogCiBTdHJpbmcgZ2V0
UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewot
ICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdp
bnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBwbHVnaW5DYWNo
ZSgpLnBsdWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBwbHVnaW5zW2ldLm1pbWVz
LnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lID0g
cGx1Z2luc1tpXS5taW1lc1tqXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113980</attachid>
            <date>2011-11-07 19:23:20 -0800</date>
            <delta_ts>2011-11-07 19:38:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71760-20111107192319.patch</filename>
            <type>text/plain</type>
            <size>18690</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzOTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDEyMTUyMGUzNWUyODdi
ZDBhNTdiYmNmNjA5ZDA0M2EwYWM1ZTVjLi5mYTM2MjQxOTIxYjkxZjhmOWY0MjA0YjhlNDUwODk1
ZTRlZTYzMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEtMDcgIE5pY28g
V2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IDYgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGFuZCA2IHN0YXRpYyBpbml0aWFsaXplcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gdGhpcyBieSBtb3Zp
bmcgZ2xvYmFsIHN0YXRpY3MgaW50byBmdW5jdGlvbi1sb2NhbCBzdGF0aWNzLCBhbmQgdXNpbmcK
KyAgICAgICAgREVGSU5FX0xPQ0FMX1NUQVRJQyB0byBsZWFrIHRoZW0uIFNpbmNlIHRoaXMgY29k
ZSBpcyBhY2Nlc3NlZCBvbiBhIHNpbmdsZQorICAgICAgICB0aHJlYWQsIHRoaXMgaXMgYSBzYWZl
IGNoYW5nZSB0byBtYWtlLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgc28gbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZl
bnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NF
dmVudC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGljVGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6d2Vha1RlbXBs
YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdGF0aWNOUE9iamVjdE1hcCk6CisgICAgICAgIChXZWJDb3JlOjp3
ZWFrTlBPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RhdGljRXh0ZW5zaW9uc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpleHRlbnNpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvbnBy
dW50aW1lLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
OjpyZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVu
c2lvbik6CisKIDIwMTEtMTEtMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29t
PgogCiAgICAgICAgIEZpeCBzb21lIHN0eWxlIGlzc3VlcyBpbiBJbWFnZUJ1ZmZlci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCmluZGV4IDU1YTgwM2Yy
YjZhYWIwMDM0ZWQ2YTgwY2ZiNDk4ZTNmM2JjODlkM2YuLjYzYWM0NGNhMDY0NzdlZmUzM2Q3ZTdh
OTFmNjQ0ZjUyNmYxYjM0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEdDRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEdDRXZlbnQuY3BwCkBAIC0zNywzMCArMzcsMzcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0R0NFdmVudDo6R0NFdmVu
dExpc3RlbmVycyBTY3JpcHRHQ0V2ZW50OjpzX2V2ZW50TGlzdGVuZXJzOwordHlwZWRlZiBWZWN0
b3I8U2NyaXB0R0NFdmVudExpc3RlbmVyKj4gR0NFdmVudExpc3RlbmVyczsKK3N0YXRpYyBHQ0V2
ZW50TGlzdGVuZXJzJiBzRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoR0NFdmVudExpc3RlbmVycywgZXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICByZXR1cm4gZXZl
bnRMaXN0ZW5lcnM7Cit9CisKIGRvdWJsZSBTY3JpcHRHQ0V2ZW50OjpzX3N0YXJ0VGltZSA9IDAu
MDsKIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpzX3VzZWRIZWFwU2l6ZSA9IDA7CiAKIHZvaWQgU2Ny
aXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqIGV2ZW50
TGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKGV2ZW50TGlzdGVuZXIpOwotICAgIGlmIChzX2V2ZW50
TGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgIGlmIChzRXZlbnRMaXN0ZW5lcnMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgdjg6OlY4OjpBZGRHQ1Byb2xvZ3VlQ2FsbGJhY2soU2NyaXB0R0NFdmVu
dDo6Z2NQcm9sb2d1ZUNhbGxiYWNrKTsKICAgICAgICAgdjg6OlY4OjpBZGRHQ0VwaWxvZ3VlQ2Fs
bGJhY2soU2NyaXB0R0NFdmVudDo6Z2NFcGlsb2d1ZUNhbGxiYWNrKTsKICAgICB9Ci0gICAgc19l
dmVudExpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgc0V2ZW50TGlzdGVuZXJz
KCkuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOwogfQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewog
ICAgIEFTU0VSVChldmVudExpc3RlbmVyKTsKLSAgICBBU1NFUlQoIXNfZXZlbnRMaXN0ZW5lcnMu
aXNFbXB0eSgpKTsKLSAgICBzaXplX3QgaSA9IHNfZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudExp
c3RlbmVyKTsKKyAgICBBU1NFUlQoIXNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSk7CisgICAg
c2l6ZV90IGkgPSBzRXZlbnRMaXN0ZW5lcnMoKS5maW5kKGV2ZW50TGlzdGVuZXIpOwogICAgIEFT
U0VSVChpICE9IG5vdEZvdW5kKTsKLSAgICBzX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShpKTsKLSAg
ICBpZiAoc19ldmVudExpc3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICBzRXZlbnRMaXN0ZW5lcnMo
KS5yZW1vdmUoaSk7CisgICAgaWYgKHNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSkgewogICAg
ICAgICB2ODo6Vjg6OlJlbW92ZUdDUHJvbG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY1By
b2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6Vjg6OlJlbW92ZUdDRXBpbG9ndWVDYWxsYmFj
ayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOwogICAgIH0KQEAgLTkyLDcgKzk5
LDcgQEAgdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2sodjg6OkdDVHlwZSB0
eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWcKIHsKICAgICBkb3VibGUgZW5kVGltZSA9IFdU
Rjo6Y3VycmVudFRpbWVNUygpOwogICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHNfdXNlZEhl
YXBTaXplIC0gZ2V0VXNlZEhlYXBTaXplKCk7Ci0gICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5l
cnMoc19ldmVudExpc3RlbmVycyk7CisgICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5lcnMoc0V2
ZW50TGlzdGVuZXJzKCkpOwogICAgIGZvciAoR0NFdmVudExpc3RlbmVyczo6aXRlcmF0b3IgaSA9
IGxpc3RlbmVycy5iZWdpbigpOyBpICE9IGxpc3RlbmVycy5lbmQoKTsgKytpKQogICAgICAgICAo
KmkpLT5kaWRHQyhzX3N0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oCmluZGV4IDJmZmQ5NDBmOTM0
NmJjNmE1YmZhZGQ4ZjY0ZjliOWQ0ZmM3ZmE3ZTYuLjA2NDRhODUwYjllMTdiODk4NTFmZWI4ZDJm
ZDQ4YmViNjU3NjU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2
ZW50LmgKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SGVhcFNpemUoc2l6ZV90Jiwgc2l6ZV90Jiwgc2l6ZV90Jik7CiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgVmVjdG9yPFNjcmlwdEdDRXZlbnRMaXN0ZW5lcio+IEdDRXZlbnRMaXN0ZW5lcnM7Ci0gICAg
c3RhdGljIEdDRXZlbnRMaXN0ZW5lcnMgc19ldmVudExpc3RlbmVyczsKICAgICBzdGF0aWMgZG91
YmxlIHNfc3RhcnRUaW1lOwogICAgIHN0YXRpYyBzaXplX3Qgc191c2VkSGVhcFNpemU7CiAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDY5MTUwNTgxYWNk
OTJiNzkwZDBlMzljMDdlZjZlMzVhODVlNTA0Y2MuLmU0M2QyN2U2NDA5ZGVlMjVhOGFlZTcyNjk3
MGE0N2U1MjYwMDVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCkBAIC0xNjMsMTUgKzE2MywyMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJ
bnZva2VEZWZhdWx0SGFuZGxlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogc3RhdGljIHZv
aWQgd2Vha1RlbXBsYXRlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCog
cGFyYW1ldGVyKTsKIAogLy8gTlBJZGVudGlmaWVyIGlzIFByaXZhdGVJZGVudGlmaWVyKi4KLXN0
YXRpYyBXZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gc3RhdGljVGVtcGxhdGVNYXAoJndlYWtUZW1wbGF0ZUNhbGxiYWNrKTsKK3N0YXRpYyBX
ZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZT4m
IHN0YXRpY1RlbXBsYXRlTWFwKCkKK3sKKyAgICB0eXBlZGVmIFdlYWtSZWZlcmVuY2VNYXA8UHJp
dmF0ZUlkZW50aWZpZXIsIHY4OjpGdW5jdGlvblRlbXBsYXRlPiBNYXBUeXBlOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoTWFwVHlwZSwgdGVtcGxhdGVNYXAsICgmd2Vha1RlbXBsYXRlQ2FsbGJh
Y2spKTsKKyAgICByZXR1cm4gdGVtcGxhdGVNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtUZW1w
bGF0ZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJh
bWV0ZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxQcml2YXRlSWRlbnRpZmllcio+KHBhcmFtZXRlcik7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIp
OwotICAgIEFTU0VSVChzdGF0aWNUZW1wbGF0ZU1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7Cisg
ICAgQVNTRVJUKHN0YXRpY1RlbXBsYXRlTWFwKCkuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0g
ICAgc3RhdGljVGVtcGxhdGVNYXAuZm9yZ2V0KGlkZW50aWZpZXIpOworICAgIHN0YXRpY1RlbXBs
YXRlTWFwKCkuZm9yZ2V0KGlkZW50aWZpZXIpOwogfQogCiAKQEAgLTIwMSwxNCArMjA2LDE0IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAKICAgICBpZiAoa2V5LT5Jc1N0cmluZygpICYmIG5w
T2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZCAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2Qo
bnBPYmplY3QsIGlkZW50aWZpZXIpKSB7CiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9
IHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7Ci0gICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gc3Rh
dGljVGVtcGxhdGVNYXAuZ2V0KGlkKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBzdGF0aWNUZW1wbGF0ZU1hcCgpLmdldChp
ZCk7CiAgICAgICAgIC8vIENhY2hlIHRlbXBsYXRlcyB1c2luZyBpZGVudGlmaWVyIGFzIHRoZSBr
ZXkuCiAgICAgICAgIGlmIChmdW5jdGlvblRlbXBsYXRlLklzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgbmV3IHRlbXBsYXRlLgogICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpOwogICAg
ICAgICAgICAgdGVtcC0+U2V0Q2FsbEhhbmRsZXIobnBPYmplY3RNZXRob2RIYW5kbGVyLCBrZXkp
OwogICAgICAgICAgICAgZnVuY3Rpb25UZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHRlbXApOwotICAgICAgICAgICAgc3RhdGljVGVtcGxhdGVNYXAu
c2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKKyAgICAgICAgICAgIHN0YXRpY1RlbXBsYXRlTWFw
KCkuc2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZ1
bmN0aW9uVGVtcGxhdGUgY2FjaGVzIGZ1bmN0aW9uIGZvciBlYWNoIGNvbnRleHQuCkBAIC0zNDEs
MTcgKzM0NiwyMSBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBPYmplY3RJbmRleGVkUHJvcGVy
dHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mCiAKIHN0YXRpYyB2b2lkIHdlYWtO
UE9iamVjdENhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRl
cik7CiAKLXN0YXRpYyBET01XcmFwcGVyTWFwPE5QT2JqZWN0PiBzdGF0aWNOUE9iamVjdE1hcCgm
d2Vha05QT2JqZWN0Q2FsbGJhY2spOworc3RhdGljIERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+JiBz
dGF0aWNOUE9iamVjdE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01XcmFwcGVy
TWFwPE5QT2JqZWN0PiwgbnBPYmplY3RNYXAsICgmd2Vha05QT2JqZWN0Q2FsbGJhY2spKTsKKyAg
ICByZXR1cm4gbnBPYmplY3RNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtOUE9iamVjdENhbGxi
YWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7
CiAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gc3RhdGljX2Nhc3Q8TlBPYmplY3QqPihwYXJhbWV0
ZXIpOwotICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhucE9iamVjdCkpOwor
ICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcCgpLmNvbnRhaW5zKG5wT2JqZWN0KSk7CiAgICAg
QVNTRVJUKG5wT2JqZWN0KTsKIAogICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZv
cmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmplY3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0IGNhbiBj
YWxsIEZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QsIHdoaWNoCiAgICAgLy8gdXNlcyB0aGUgdGFi
bGUgYXMgd2VsbC4KLSAgICBzdGF0aWNOUE9iamVjdE1hcC5mb3JnZXQobnBPYmplY3QpOworICAg
IHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG5wT2JqZWN0KTsKIAogICAgIGlmIChfTlBOX0lz
QWxpdmUobnBPYmplY3QpKQogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QobnBPYmplY3QpOwpA
QCAtMzcxLDggKzM4MCw4IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgfQogCiAgICAg
Ly8gSWYgd2UndmUgYWxyZWFkeSB3cmFwcGVkIHRoaXMgb2JqZWN0LCBqdXN0IHJldHVybiBpdC4K
LSAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHN0YXRpY05QT2JqZWN0TWFwLmdldChvYmpl
Y3QpKTsKKyAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAoKS5jb250YWlucyhvYmplY3QpKQorICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc3RhdGljTlBPYmplY3RNYXAo
KS5nZXQob2JqZWN0KSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNyZWF0ZSBhIFdyYXBw
ZXIgdHlwZSBhcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0LiBJdCBoYXMgdHdvIGludGVybmFsIGZp
ZWxkcywgZmllbGQgMCBpcyB0aGUgd3JhcHBlZAogICAgIC8vIHBvaW50ZXIsIGFuZCBmaWVsZCAx
IGlzIHRoZSB0eXBlLiBUaGVyZSBzaG91bGQgYmUgYW4gYXBpIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB1bnVzZWQgdHlwZSBpZC4gVGhlIHNhbWUgV3JhcHBlciB0eXBlCkBAIC00MDEsMTggKzQxMCwx
OCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdChOUE9i
amVjdCogb2JqZWN0LCBOUE9iamVjdCogcm9vdAogCiAgICAgLy8gTWFpbnRhaW4gYSB3ZWFrIHBv
aW50ZXIgZm9yIHY4IHNvIHdlIGNhbiBjbGVhbnVwIHRoZSBvYmplY3QuCiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd2Vha1JlZiA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcodmFsdWUpOwotICAgIHN0YXRpY05QT2JqZWN0TWFwLnNldChvYmplY3QsIHdlYWtSZWYpOwor
ICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd2Vha1JlZik7CiAKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCog
b2JqZWN0KQogewotICAgIGlmIChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhvYmplY3QpKSB7
CisgICAgaWYgKHN0YXRpY05QT2JqZWN0TWFwKCkuY29udGFpbnMob2JqZWN0KSkgewogICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcC5nZXQob2JqZWN0KSk7CisgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcCgpLmdldChvYmpl
Y3QpKTsKICAgICAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGhhbmRsZSwgbnBPYmpl
Y3RUeXBlSW5mbygpLCAwKTsKLSAgICAgICAgc3RhdGljTlBPYmplY3RNYXAuZm9yZ2V0KG9iamVj
dCk7CisgICAgICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG9iamVjdCk7CiAgICAgICAg
IF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZjYxYmQ5ZmU1MjkwODJmMDZlYTFhZGEyY2VhYjg4NDI4
NzQwNWRhYS4uZTE2NmJjMjIxZGRlNjdjNDYyZDRlOTc3MDQyMTMxMTlkODczM2QwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTc2LDggKzc2LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gU3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBleHRlbnNp
b25zCi1WOEV4dGVuc2lvbnMgVjhQcm94eTo6bV9leHRlbnNpb25zOworc3RhdGljIFY4RXh0ZW5z
aW9ucyYgc3RhdGljRXh0ZW5zaW9uc0xpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VjhFeHRlbnNpb25zLCBleHRlbnNpb25zLCAoKSk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnM7Cit9
CiAKIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIApAQCAtNzUwLDggKzc1Myw5IEBAIHZvaWQg
VjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9u
KQogCiBib29sIFY4UHJveHk6OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lv
biogZXh0ZW5zaW9uKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHRlbnNpb25z
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2V4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9u
KQorICAgIGNvbnN0IFY4RXh0ZW5zaW9ucyYgcmVnaXN0ZXJlZEV4dGVuc2lvbnMgPSBleHRlbnNp
b25zKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RlcmVkRXh0ZW5zaW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAocmVnaXN0ZXJlZEV4dGVuc2lvbnNbaV0gPT0gZXh0
ZW5zaW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC03NjEsNyArNzY1
LDEyIEBAIGJvb2wgVjhQcm94eTo6cmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5z
aW9uKiBleHRlbnNpb24pCiB2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRl
bnNpb24qIGV4dGVuc2lvbikKIHsKICAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNp
b24pOwotICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKTsKKyAgICBzdGF0aWNFeHRl
bnNpb25zTGlzdCgpLmFwcGVuZChleHRlbnNpb24pOworfQorCitjb25zdCBWOEV4dGVuc2lvbnMm
IFY4UHJveHk6OmV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiBzdGF0aWNFeHRlbnNpb25zTGlz
dCgpOwogfQogCiBib29sIFY4UHJveHk6OnNldENvbnRleHREZWJ1Z0lkKGludCBkZWJ1Z0lkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDE3ZjMyZTQ2MDNiZmU2OTJiZDU1
NjVmZGRlMWUzMTNiMTg5M2Y5NTEuLjQ1ZjJjZTZhMmY4YWMxZmE1NjQ0OWQ4N2I2YTU4NzliZTBi
YTIwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAgLTI3NCw3ICsyNzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0
ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAgc3RhdGljIGJvb2wgcmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CiAKLSAgICAgICAgc3RhdGljIGNv
bnN0IFY4RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucygpIHsgcmV0dXJuIG1fZXh0ZW5zaW9uczsgfQor
ICAgICAgICBzdGF0aWMgY29uc3QgVjhFeHRlbnNpb25zJiBleHRlbnNpb25zKCk7CiAKICAgICAg
ICAgLy8gUmVwb3J0IGFuIHVuc2FmZSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgZ2l2ZW4gZnJhbWUg
b24gdGhlIGNvbnNvbGUuCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZUFjY2Vzc1Rv
KEZyYW1lKiB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
bnBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAK
aW5kZXggYTBlY2Q1M2I2MDllMjc0ZTgwMTM3YzBkNjliNTEzYmNjYmM2ODhiNS4uOGQ4MGNmOTMz
MTg2ZTg1NDdjMTg1MTgzZDdlNzQ4NGJjZTFlODRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ucHJ1bnRpbWUuY3BwCkBAIC0zNTYsNjcgKzM1Niw3NSBAQCB0eXBlZGVmIFdURjo6SGFz
aE1hcDxOUE9iamVjdCosIE5QT2JqZWN0Kj4gTlBPYmplY3RNYXA7CiB0eXBlZGVmIFdURjo6SGFz
aE1hcDxOUE9iamVjdCosIE5QT2JqZWN0U2V0Kj4gTlBSb290T2JqZWN0TWFwOwogCiAvLyBBIG1h
cCBvZiBsaXZlIE5QT2JqZWN0cyB3aXRoIHBvaW50ZXJzIHRvIHRoZWlyIFJvb3RzLgotTlBPYmpl
Y3RNYXAgbGl2ZU9iamVjdE1hcDsKK3N0YXRpYyBOUE9iamVjdE1hcCYgbGl2ZU9iamVjdE1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOUE9iamVjdE1hcCwgb2JqZWN0TWFwLCAoKSk7
CisgICAgcmV0dXJuIG9iamVjdE1hcDsKK30KIAogLy8gQSBtYXAgb2YgdGhlIHJvb3Qgb2JqZWN0
cyBhbmQgdGhlIGxpc3Qgb2YgTlBPYmplY3RzCiAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBvYmpl
Y3QuCi1OUFJvb3RPYmplY3RNYXAgcm9vdE9iamVjdE1hcDsKK3N0YXRpYyBOUFJvb3RPYmplY3RN
YXAmIHJvb3RPYmplY3RNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTlBSb290T2Jq
ZWN0TWFwLCBvYmplY3RNYXAsICgpKTsKKyAgICByZXR1cm4gb2JqZWN0TWFwOworfQogCiB2b2lk
IF9OUE5fUmVnaXN0ZXJPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBOUE9iamVjdCogb3duZXIp
CiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKIAogICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcmVn
aXN0ZXJlZC4KLSAgICBpZiAobGl2ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2Jq
ZWN0TWFwLmVuZCgpKQorICAgIGlmIChsaXZlT2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0g
bGl2ZU9iamVjdE1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW93bmVy
KSB7CiAgICAgICAgIC8vIFJlZ2lzdGVyaW5nIGEgbmV3IG93bmVyIG9iamVjdC4KLSAgICAgICAg
QVNTRVJUKHJvb3RPYmplY3RNYXAuZmluZChucE9iamVjdCkgPT0gcm9vdE9iamVjdE1hcC5lbmQo
KSk7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAuc2V0KG5wT2JqZWN0LCBuZXcgTlBPYmplY3RTZXQo
KSk7CisgICAgICAgIEFTU0VSVChyb290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgPT0gcm9v
dE9iamVjdE1hcCgpLmVuZCgpKTsKKyAgICAgICAgcm9vdE9iamVjdE1hcCgpLnNldChucE9iamVj
dCwgbmV3IE5QT2JqZWN0U2V0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFsd2F5cyBh
c3NvY2lhdGUgdGhpcyBvYmplY3Qgd2l0aCBpdCdzIHRvcC1tb3N0IHBhcmVudC4KICAgICAgICAg
Ly8gU2luY2Ugd2UgYWx3YXlzIGZsYXR0ZW4sIHdlIG9ubHkgaGF2ZSB0byBsb29rIHVwIG9uZSBs
ZXZlbC4KLSAgICAgICAgTlBPYmplY3RNYXA6Oml0ZXJhdG9yIG93bmVyRW50cnkgPSBsaXZlT2Jq
ZWN0TWFwLmZpbmQob3duZXIpOworICAgICAgICBOUE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJF
bnRyeSA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG93bmVyKTsKICAgICAgICAgTlBPYmplY3QqIHBh
cmVudCA9IDA7Ci0gICAgICAgIGlmIChsaXZlT2JqZWN0TWFwLmVuZCgpICE9IG93bmVyRW50cnkp
CisgICAgICAgIGlmIChsaXZlT2JqZWN0TWFwKCkuZW5kKCkgIT0gb3duZXJFbnRyeSkKICAgICAg
ICAgICAgIHBhcmVudCA9IG93bmVyRW50cnktPnNlY29uZDsKIAogICAgICAgICBpZiAocGFyZW50
KQogICAgICAgICAgICAgb3duZXIgPSBwYXJlbnQ7Ci0gICAgICAgIEFTU0VSVChyb290T2JqZWN0
TWFwLmZpbmQobnBPYmplY3QpID09IHJvb3RPYmplY3RNYXAuZW5kKCkpOwotICAgICAgICBpZiAo
cm9vdE9iamVjdE1hcC5maW5kKG93bmVyKSAhPSByb290T2JqZWN0TWFwLmVuZCgpKQotICAgICAg
ICAgICAgcm9vdE9iamVjdE1hcC5nZXQob3duZXIpLT5hZGQobnBPYmplY3QpOworICAgICAgICBB
U1NFUlQocm9vdE9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpID09IHJvb3RPYmplY3RNYXAoKS5l
bmQoKSk7CisgICAgICAgIGlmIChyb290T2JqZWN0TWFwKCkuZmluZChvd25lcikgIT0gcm9vdE9i
amVjdE1hcCgpLmVuZCgpKQorICAgICAgICAgICAgcm9vdE9iamVjdE1hcCgpLmdldChvd25lcikt
PmFkZChucE9iamVjdCk7CiAgICAgfQogCi0gICAgQVNTRVJUKGxpdmVPYmplY3RNYXAuZmluZChu
cE9iamVjdCkgPT0gbGl2ZU9iamVjdE1hcC5lbmQoKSk7Ci0gICAgbGl2ZU9iamVjdE1hcC5zZXQo
bnBPYmplY3QsIG93bmVyKTsKKyAgICBBU1NFUlQobGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmpl
Y3QpID09IGxpdmVPYmplY3RNYXAoKS5lbmQoKSk7CisgICAgbGl2ZU9iamVjdE1hcCgpLnNldChu
cE9iamVjdCwgb3duZXIpOwogfQogCiB2b2lkIF9OUE5fVW5yZWdpc3Rlck9iamVjdChOUE9iamVj
dCogbnBPYmplY3QpCiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKLSAgICBBU1NFUlQobGl2ZU9i
amVjdE1hcC5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwLmVuZCgpKTsKKyAgICBBU1NF
UlQobGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAoKS5lbmQo
KSk7CiAKICAgICBOUE9iamVjdCogb3duZXIgPSAwOwotICAgIGlmIChsaXZlT2JqZWN0TWFwLmZp
bmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAuZW5kKCkpCi0gICAgICAgIG93bmVyID0gbGl2
ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KS0+c2Vjb25kOworICAgIGlmIChsaXZlT2JqZWN0TWFw
KCkuZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVjdE1hcCgpLmVuZCgpKQorICAgICAgICBvd25l
ciA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KS0+c2Vjb25kOwogCiAgICAgaWYgKCFv
d25lcikgewogICAgICAgICAvLyBVbnJlZ2lzdGVyaW5nIGEgb3duZXIgb2JqZWN0OyBhbHNvIHVu
cmVnaXN0ZXIgaXQncyBkZXNjZW5kYW50cy4KLSAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAu
ZmluZChucE9iamVjdCkgIT0gcm9vdE9iamVjdE1hcC5lbmQoKSk7Ci0gICAgICAgIE5QT2JqZWN0
U2V0KiBzZXQgPSByb290T2JqZWN0TWFwLmdldChucE9iamVjdCk7CisgICAgICAgIEFTU0VSVChy
b290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKTsK
KyAgICAgICAgTlBPYmplY3RTZXQqIHNldCA9IHJvb3RPYmplY3RNYXAoKS5nZXQobnBPYmplY3Qp
OwogICAgICAgICB3aGlsZSAoc2V0LT5zaXplKCkgPiAwKSB7CiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICAgICAgaW50IHNpemUgPSBzZXQtPnNpemUoKTsKICNlbmRpZgogICAgICAgICAgICAgTlBP
YmplY3QqIHN1Yl9vYmplY3QgPSAqKHNldC0+YmVnaW4oKSk7CiAgICAgICAgICAgICAvLyBUaGUg
c3ViLW9iamVjdCBzaG91bGQgbm90IGJlIGEgb3duZXIhCi0gICAgICAgICAgICBBU1NFUlQocm9v
dE9iamVjdE1hcC5maW5kKHN1Yl9vYmplY3QpID09IHJvb3RPYmplY3RNYXAuZW5kKCkpOworICAg
ICAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAoKS5maW5kKHN1Yl9vYmplY3QpID09IHJvb3RP
YmplY3RNYXAoKS5lbmQoKSk7CiAKICAgICAgICAgICAgIC8vIEZpcnN0LCB1bnJlZ2lzdGVyIHRo
ZSBvYmplY3QuCiAgICAgICAgICAgICBzZXQtPnJlbW92ZShzdWJfb2JqZWN0KTsKLSAgICAgICAg
ICAgIGxpdmVPYmplY3RNYXAucmVtb3ZlKHN1Yl9vYmplY3QpOworICAgICAgICAgICAgbGl2ZU9i
amVjdE1hcCgpLnJlbW92ZShzdWJfb2JqZWN0KTsKIAogICAgICAgICAgICAgLy8gU2NyaXB0IG9i
amVjdHMgaG9sZCBhIHJlZmVybmNlIHRvIHRoZWlyIERPTVdpbmRvdyosIHdoaWNoIGlzIGdvaW5n
IGF3YXkgaWYKICAgICAgICAgICAgIC8vIHdlJ3JlIHVucmVnaXN0ZXJpbmcgdGhlIGFzc29jaWF0
ZWQgb3duZXIgTlBPYmplY3QuIENsZWFyIGl0IG91dC4KQEAgLTQzMSwyMyArNDM5LDIzIEBAIHZv
aWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICAgICAgICAg
IEFTU0VSVChzZXQtPnNpemUoKSA8IHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBz
ZXQ7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAucmVtb3ZlKG5wT2JqZWN0KTsKKyAgICAgICAgcm9v
dE9iamVjdE1hcCgpLnJlbW92ZShucE9iamVjdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTlBS
b290T2JqZWN0TWFwOjppdGVyYXRvciBvd25lckVudHJ5ID0gcm9vdE9iamVjdE1hcC5maW5kKG93
bmVyKTsKLSAgICAgICAgaWYgKG93bmVyRW50cnkgIT0gcm9vdE9iamVjdE1hcC5lbmQoKSkgewor
ICAgICAgICBOUFJvb3RPYmplY3RNYXA6Oml0ZXJhdG9yIG93bmVyRW50cnkgPSByb290T2JqZWN0
TWFwKCkuZmluZChvd25lcik7CisgICAgICAgIGlmIChvd25lckVudHJ5ICE9IHJvb3RPYmplY3RN
YXAoKS5lbmQoKSkgewogICAgICAgICAgICAgTlBPYmplY3RTZXQqIGxpc3QgPSBvd25lckVudHJ5
LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NFUlQobGlzdC0+ZmluZChucE9iamVjdCkgIT0gbGlz
dC0+ZW5kKCkpOwogICAgICAgICAgICAgbGlzdC0+cmVtb3ZlKG5wT2JqZWN0KTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxpdmVPYmplY3RNYXAucmVtb3ZlKG5wT2JqZWN0KTsKKyAgICBsaXZl
T2JqZWN0TWFwKCkucmVtb3ZlKG5wT2JqZWN0KTsKICAgICBmb3JnZXRWOE9iamVjdEZvck5QT2Jq
ZWN0KG5wT2JqZWN0KTsKIH0KIAogYm9vbCBfTlBOX0lzQWxpdmUoTlBPYmplY3QqIG5wT2JqZWN0
KQogewotICAgIHJldHVybiBsaXZlT2JqZWN0TWFwLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmpl
Y3RNYXAuZW5kKCk7CisgICAgcmV0dXJuIGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAh
PSBsaXZlT2JqZWN0TWFwKCkuZW5kKCk7CiB9CiAKIH0gIC8vIGV4dGVybiAiQyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNw
cAppbmRleCAyNDA0OTRmNTk3MDA2NWVhNmQ2YzcxOGM3ZDNmYmY5YzAyNGVmMWJmLi43ODlhOGZh
ZjVjNzY3YjEzOWE1ZDc4Yjg0MTg5NjRhYjE5ZDg5NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCkBAIC02Mywy
NCArNjMsMjggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVmcmVzaDsKIH07CiAKLXN0YXRpYyBQ
bHVnaW5DYWNoZSBwbHVnaW5DYWNoZTsKK3N0YXRpYyBQbHVnaW5DYWNoZSYgcGx1Z2luQ2FjaGUo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGx1Z2luQ2FjaGUsIGNhY2hlLCAoKSk7Cisg
ICAgcmV0dXJuIGNhY2hlKCk7Cit9CiAKIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29u
c3QgUGFnZSopCiB7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0gcGx1
Z2luQ2FjaGUucGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lu
cyA9IHBsdWdpbkNhY2hlKCkucGx1Z2lucygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ld
KTsKIH0KIAogdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKIHsKLSAgICBwbHVnaW5DYWNoZS5y
ZXNldCh0cnVlKTsKLSAgICBwbHVnaW5DYWNoZS5wbHVnaW5zKCk7ICAvLyBGb3JjZSB0aGUgcGx1
Z2lucyB0byBiZSByZWxvYWRlZCBub3cuCisgICAgcGx1Z2luQ2FjaGUoKS5yZXNldCh0cnVlKTsK
KyAgICBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsgLy8gRm9yY2UgdGhlIHBsdWdpbnMgdG8gYmUg
cmVsb2FkZWQgbm93LgogfQogCiBTdHJpbmcgZ2V0UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
PiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UGx1
Z2luSW5mbz4mIHBsdWdpbnMgPSBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBwbHVnaW5zW2ldLm1pbWVzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAg
ICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lID0gcGx1Z2luc1tpXS5taW1lc1tqXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113981</attachid>
            <date>2011-11-07 19:38:23 -0800</date>
            <delta_ts>2011-11-08 08:50:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71760-20111107193822.patch</filename>
            <type>text/plain</type>
            <size>18688</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzOTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDEyMTUyMGUzNWUyODdi
ZDBhNTdiYmNmNjA5ZDA0M2EwYWM1ZTVjLi5mYTM2MjQxOTIxYjkxZjhmOWY0MjA0YjhlNDUwODk1
ZTRlZTYzMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEtMDcgIE5pY28g
V2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IDYgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGFuZCA2IHN0YXRpYyBpbml0aWFsaXplcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gdGhpcyBieSBtb3Zp
bmcgZ2xvYmFsIHN0YXRpY3MgaW50byBmdW5jdGlvbi1sb2NhbCBzdGF0aWNzLCBhbmQgdXNpbmcK
KyAgICAgICAgREVGSU5FX0xPQ0FMX1NUQVRJQyB0byBsZWFrIHRoZW0uIFNpbmNlIHRoaXMgY29k
ZSBpcyBhY2Nlc3NlZCBvbiBhIHNpbmdsZQorICAgICAgICB0aHJlYWQsIHRoaXMgaXMgYSBzYWZl
IGNoYW5nZSB0byBtYWtlLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgc28gbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZl
bnQ6OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NF
dmVudC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGljVGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6d2Vha1RlbXBs
YXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdGF0aWNOUE9iamVjdE1hcCk6CisgICAgICAgIChXZWJDb3JlOjp3
ZWFrTlBPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RhdGljRXh0ZW5zaW9uc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpleHRlbnNpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvbnBy
dW50aW1lLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
OjpyZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVu
c2lvbik6CisKIDIwMTEtMTEtMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29t
PgogCiAgICAgICAgIEZpeCBzb21lIHN0eWxlIGlzc3VlcyBpbiBJbWFnZUJ1ZmZlci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCmluZGV4IDU1YTgwM2Yy
YjZhYWIwMDM0ZWQ2YTgwY2ZiNDk4ZTNmM2JjODlkM2YuLjYzYWM0NGNhMDY0NzdlZmUzM2Q3ZTdh
OTFmNjQ0ZjUyNmYxYjM0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEdDRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dEdDRXZlbnQuY3BwCkBAIC0zNywzMCArMzcsMzcgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2NyaXB0R0NFdmVudDo6R0NFdmVu
dExpc3RlbmVycyBTY3JpcHRHQ0V2ZW50OjpzX2V2ZW50TGlzdGVuZXJzOwordHlwZWRlZiBWZWN0
b3I8U2NyaXB0R0NFdmVudExpc3RlbmVyKj4gR0NFdmVudExpc3RlbmVyczsKK3N0YXRpYyBHQ0V2
ZW50TGlzdGVuZXJzJiBzRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoR0NFdmVudExpc3RlbmVycywgZXZlbnRMaXN0ZW5lcnMsICgpKTsKKyAgICByZXR1cm4gZXZl
bnRMaXN0ZW5lcnM7Cit9CisKIGRvdWJsZSBTY3JpcHRHQ0V2ZW50OjpzX3N0YXJ0VGltZSA9IDAu
MDsKIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpzX3VzZWRIZWFwU2l6ZSA9IDA7CiAKIHZvaWQgU2Ny
aXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqIGV2ZW50
TGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKGV2ZW50TGlzdGVuZXIpOwotICAgIGlmIChzX2V2ZW50
TGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgIGlmIChzRXZlbnRMaXN0ZW5lcnMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgdjg6OlY4OjpBZGRHQ1Byb2xvZ3VlQ2FsbGJhY2soU2NyaXB0R0NFdmVu
dDo6Z2NQcm9sb2d1ZUNhbGxiYWNrKTsKICAgICAgICAgdjg6OlY4OjpBZGRHQ0VwaWxvZ3VlQ2Fs
bGJhY2soU2NyaXB0R0NFdmVudDo6Z2NFcGlsb2d1ZUNhbGxiYWNrKTsKICAgICB9Ci0gICAgc19l
dmVudExpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgc0V2ZW50TGlzdGVuZXJz
KCkuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOwogfQogCiB2b2lkIFNjcmlwdEdDRXZlbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewog
ICAgIEFTU0VSVChldmVudExpc3RlbmVyKTsKLSAgICBBU1NFUlQoIXNfZXZlbnRMaXN0ZW5lcnMu
aXNFbXB0eSgpKTsKLSAgICBzaXplX3QgaSA9IHNfZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudExp
c3RlbmVyKTsKKyAgICBBU1NFUlQoIXNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSk7CisgICAg
c2l6ZV90IGkgPSBzRXZlbnRMaXN0ZW5lcnMoKS5maW5kKGV2ZW50TGlzdGVuZXIpOwogICAgIEFT
U0VSVChpICE9IG5vdEZvdW5kKTsKLSAgICBzX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShpKTsKLSAg
ICBpZiAoc19ldmVudExpc3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICBzRXZlbnRMaXN0ZW5lcnMo
KS5yZW1vdmUoaSk7CisgICAgaWYgKHNFdmVudExpc3RlbmVycygpLmlzRW1wdHkoKSkgewogICAg
ICAgICB2ODo6Vjg6OlJlbW92ZUdDUHJvbG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY1By
b2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6Vjg6OlJlbW92ZUdDRXBpbG9ndWVDYWxsYmFj
ayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOwogICAgIH0KQEAgLTkyLDcgKzk5
LDcgQEAgdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2sodjg6OkdDVHlwZSB0
eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWcKIHsKICAgICBkb3VibGUgZW5kVGltZSA9IFdU
Rjo6Y3VycmVudFRpbWVNUygpOwogICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHNfdXNlZEhl
YXBTaXplIC0gZ2V0VXNlZEhlYXBTaXplKCk7Ci0gICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5l
cnMoc19ldmVudExpc3RlbmVycyk7CisgICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5lcnMoc0V2
ZW50TGlzdGVuZXJzKCkpOwogICAgIGZvciAoR0NFdmVudExpc3RlbmVyczo6aXRlcmF0b3IgaSA9
IGxpc3RlbmVycy5iZWdpbigpOyBpICE9IGxpc3RlbmVycy5lbmQoKTsgKytpKQogICAgICAgICAo
KmkpLT5kaWRHQyhzX3N0YXJ0VGltZSwgZW5kVGltZSwgY29sbGVjdGVkQnl0ZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5oCmluZGV4IDJmZmQ5NDBmOTM0
NmJjNmE1YmZhZGQ4ZjY0ZjliOWQ0ZmM3ZmE3ZTYuLjA2NDRhODUwYjllMTdiODk4NTFmZWI4ZDJm
ZDQ4YmViNjU3NjU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2
ZW50LmgKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoU2NyaXB0R0NFdmVudExpc3RlbmVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SGVhcFNpemUoc2l6ZV90Jiwgc2l6ZV90Jiwgc2l6ZV90Jik7CiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgVmVjdG9yPFNjcmlwdEdDRXZlbnRMaXN0ZW5lcio+IEdDRXZlbnRMaXN0ZW5lcnM7Ci0gICAg
c3RhdGljIEdDRXZlbnRMaXN0ZW5lcnMgc19ldmVudExpc3RlbmVyczsKICAgICBzdGF0aWMgZG91
YmxlIHNfc3RhcnRUaW1lOwogICAgIHN0YXRpYyBzaXplX3Qgc191c2VkSGVhcFNpemU7CiAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDY5MTUwNTgxYWNk
OTJiNzkwZDBlMzljMDdlZjZlMzVhODVlNTA0Y2MuLmU0M2QyN2U2NDA5ZGVlMjVhOGFlZTcyNjk3
MGE0N2U1MjYwMDVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCkBAIC0xNjMsMTUgKzE2MywyMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJ
bnZva2VEZWZhdWx0SGFuZGxlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogc3RhdGljIHZv
aWQgd2Vha1RlbXBsYXRlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCog
cGFyYW1ldGVyKTsKIAogLy8gTlBJZGVudGlmaWVyIGlzIFByaXZhdGVJZGVudGlmaWVyKi4KLXN0
YXRpYyBXZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gc3RhdGljVGVtcGxhdGVNYXAoJndlYWtUZW1wbGF0ZUNhbGxiYWNrKTsKK3N0YXRpYyBX
ZWFrUmVmZXJlbmNlTWFwPFByaXZhdGVJZGVudGlmaWVyLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZT4m
IHN0YXRpY1RlbXBsYXRlTWFwKCkKK3sKKyAgICB0eXBlZGVmIFdlYWtSZWZlcmVuY2VNYXA8UHJp
dmF0ZUlkZW50aWZpZXIsIHY4OjpGdW5jdGlvblRlbXBsYXRlPiBNYXBUeXBlOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoTWFwVHlwZSwgdGVtcGxhdGVNYXAsICgmd2Vha1RlbXBsYXRlQ2FsbGJh
Y2spKTsKKyAgICByZXR1cm4gdGVtcGxhdGVNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtUZW1w
bGF0ZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJh
bWV0ZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxQcml2YXRlSWRlbnRpZmllcio+KHBhcmFtZXRlcik7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIp
OwotICAgIEFTU0VSVChzdGF0aWNUZW1wbGF0ZU1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7Cisg
ICAgQVNTRVJUKHN0YXRpY1RlbXBsYXRlTWFwKCkuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0g
ICAgc3RhdGljVGVtcGxhdGVNYXAuZm9yZ2V0KGlkZW50aWZpZXIpOworICAgIHN0YXRpY1RlbXBs
YXRlTWFwKCkuZm9yZ2V0KGlkZW50aWZpZXIpOwogfQogCiAKQEAgLTIwMSwxNCArMjA2LDE0IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAKICAgICBpZiAoa2V5LT5Jc1N0cmluZygpICYmIG5w
T2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZCAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2Qo
bnBPYmplY3QsIGlkZW50aWZpZXIpKSB7CiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZCA9
IHN0YXRpY19jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4oaWRlbnRpZmllcik7Ci0gICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlID0gc3Rh
dGljVGVtcGxhdGVNYXAuZ2V0KGlkKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBzdGF0aWNUZW1wbGF0ZU1hcCgpLmdldChp
ZCk7CiAgICAgICAgIC8vIENhY2hlIHRlbXBsYXRlcyB1c2luZyBpZGVudGlmaWVyIGFzIHRoZSBr
ZXkuCiAgICAgICAgIGlmIChmdW5jdGlvblRlbXBsYXRlLklzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgbmV3IHRlbXBsYXRlLgogICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpOwogICAg
ICAgICAgICAgdGVtcC0+U2V0Q2FsbEhhbmRsZXIobnBPYmplY3RNZXRob2RIYW5kbGVyLCBrZXkp
OwogICAgICAgICAgICAgZnVuY3Rpb25UZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHRlbXApOwotICAgICAgICAgICAgc3RhdGljVGVtcGxhdGVNYXAu
c2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKKyAgICAgICAgICAgIHN0YXRpY1RlbXBsYXRlTWFw
KCkuc2V0KGlkLCBmdW5jdGlvblRlbXBsYXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZ1
bmN0aW9uVGVtcGxhdGUgY2FjaGVzIGZ1bmN0aW9uIGZvciBlYWNoIGNvbnRleHQuCkBAIC0zNDEs
MTcgKzM0NiwyMSBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gbnBPYmplY3RJbmRleGVkUHJvcGVy
dHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mCiAKIHN0YXRpYyB2b2lkIHdlYWtO
UE9iamVjdENhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIHBhcmFtZXRl
cik7CiAKLXN0YXRpYyBET01XcmFwcGVyTWFwPE5QT2JqZWN0PiBzdGF0aWNOUE9iamVjdE1hcCgm
d2Vha05QT2JqZWN0Q2FsbGJhY2spOworc3RhdGljIERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+JiBz
dGF0aWNOUE9iamVjdE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01XcmFwcGVy
TWFwPE5QT2JqZWN0PiwgbnBPYmplY3RNYXAsICgmd2Vha05QT2JqZWN0Q2FsbGJhY2spKTsKKyAg
ICByZXR1cm4gbnBPYmplY3RNYXA7Cit9CiAKIHN0YXRpYyB2b2lkIHdlYWtOUE9iamVjdENhbGxi
YWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCiB7
CiAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gc3RhdGljX2Nhc3Q8TlBPYmplY3QqPihwYXJhbWV0
ZXIpOwotICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhucE9iamVjdCkpOwor
ICAgIEFTU0VSVChzdGF0aWNOUE9iamVjdE1hcCgpLmNvbnRhaW5zKG5wT2JqZWN0KSk7CiAgICAg
QVNTRVJUKG5wT2JqZWN0KTsKIAogICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZv
cmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmplY3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0IGNhbiBj
YWxsIEZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QsIHdoaWNoCiAgICAgLy8gdXNlcyB0aGUgdGFi
bGUgYXMgd2VsbC4KLSAgICBzdGF0aWNOUE9iamVjdE1hcC5mb3JnZXQobnBPYmplY3QpOworICAg
IHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG5wT2JqZWN0KTsKIAogICAgIGlmIChfTlBOX0lz
QWxpdmUobnBPYmplY3QpKQogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QobnBPYmplY3QpOwpA
QCAtMzcxLDggKzM4MCw4IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZv
ck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgfQogCiAgICAg
Ly8gSWYgd2UndmUgYWxyZWFkeSB3cmFwcGVkIHRoaXMgb2JqZWN0LCBqdXN0IHJldHVybiBpdC4K
LSAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAuY29udGFpbnMob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHN0YXRpY05QT2JqZWN0TWFwLmdldChvYmpl
Y3QpKTsKKyAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAoKS5jb250YWlucyhvYmplY3QpKQorICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc3RhdGljTlBPYmplY3RNYXAo
KS5nZXQob2JqZWN0KSk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNyZWF0ZSBhIFdyYXBw
ZXIgdHlwZSBhcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0LiBJdCBoYXMgdHdvIGludGVybmFsIGZp
ZWxkcywgZmllbGQgMCBpcyB0aGUgd3JhcHBlZAogICAgIC8vIHBvaW50ZXIsIGFuZCBmaWVsZCAx
IGlzIHRoZSB0eXBlLiBUaGVyZSBzaG91bGQgYmUgYW4gYXBpIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB1bnVzZWQgdHlwZSBpZC4gVGhlIHNhbWUgV3JhcHBlciB0eXBlCkBAIC00MDEsMTggKzQxMCwx
OCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdChOUE9i
amVjdCogb2JqZWN0LCBOUE9iamVjdCogcm9vdAogCiAgICAgLy8gTWFpbnRhaW4gYSB3ZWFrIHBv
aW50ZXIgZm9yIHY4IHNvIHdlIGNhbiBjbGVhbnVwIHRoZSBvYmplY3QuCiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd2Vha1JlZiA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcodmFsdWUpOwotICAgIHN0YXRpY05QT2JqZWN0TWFwLnNldChvYmplY3QsIHdlYWtSZWYpOwor
ICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd2Vha1JlZik7CiAKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCog
b2JqZWN0KQogewotICAgIGlmIChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhvYmplY3QpKSB7
CisgICAgaWYgKHN0YXRpY05QT2JqZWN0TWFwKCkuY29udGFpbnMob2JqZWN0KSkgewogICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcC5nZXQob2JqZWN0KSk7CisgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGhhbmRsZShzdGF0aWNOUE9iamVjdE1hcCgpLmdldChvYmpl
Y3QpKTsKICAgICAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGhhbmRsZSwgbnBPYmpl
Y3RUeXBlSW5mbygpLCAwKTsKLSAgICAgICAgc3RhdGljTlBPYmplY3RNYXAuZm9yZ2V0KG9iamVj
dCk7CisgICAgICAgIHN0YXRpY05QT2JqZWN0TWFwKCkuZm9yZ2V0KG9iamVjdCk7CiAgICAgICAg
IF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZjYxYmQ5ZmU1MjkwODJmMDZlYTFhZGEyY2VhYjg4NDI4
NzQwNWRhYS4uZTE2NmJjMjIxZGRlNjdjNDYyZDRlOTc3MDQyMTMxMTlkODczM2QwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTc2LDggKzc2LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gU3RhdGljIGxpc3Qgb2YgcmVnaXN0ZXJlZCBleHRlbnNp
b25zCi1WOEV4dGVuc2lvbnMgVjhQcm94eTo6bV9leHRlbnNpb25zOworc3RhdGljIFY4RXh0ZW5z
aW9ucyYgc3RhdGljRXh0ZW5zaW9uc0xpc3QoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VjhFeHRlbnNpb25zLCBleHRlbnNpb25zLCAoKSk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnM7Cit9
CiAKIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIApAQCAtNzUwLDggKzc1Myw5IEBAIHZvaWQg
VjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9u
KQogCiBib29sIFY4UHJveHk6OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lv
biogZXh0ZW5zaW9uKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHRlbnNpb25z
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2V4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9u
KQorICAgIGNvbnN0IFY4RXh0ZW5zaW9ucyYgcmVnaXN0ZXJlZEV4dGVuc2lvbnMgPSBleHRlbnNp
b25zKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RlcmVkRXh0ZW5zaW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAocmVnaXN0ZXJlZEV4dGVuc2lvbnNbaV0gPT0gZXh0
ZW5zaW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC03NjEsNyArNzY1
LDEyIEBAIGJvb2wgVjhQcm94eTo6cmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5z
aW9uKiBleHRlbnNpb24pCiB2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRl
bnNpb24qIGV4dGVuc2lvbikKIHsKICAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNp
b24pOwotICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKTsKKyAgICBzdGF0aWNFeHRl
bnNpb25zTGlzdCgpLmFwcGVuZChleHRlbnNpb24pOworfQorCitjb25zdCBWOEV4dGVuc2lvbnMm
IFY4UHJveHk6OmV4dGVuc2lvbnMoKQoreworICAgIHJldHVybiBzdGF0aWNFeHRlbnNpb25zTGlz
dCgpOwogfQogCiBib29sIFY4UHJveHk6OnNldENvbnRleHREZWJ1Z0lkKGludCBkZWJ1Z0lkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IDE3ZjMyZTQ2MDNiZmU2OTJiZDU1
NjVmZGRlMWUzMTNiMTg5M2Y5NTEuLjQ1ZjJjZTZhMmY4YWMxZmE1NjQ0OWQ4N2I2YTU4NzliZTBi
YTIwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKQEAgLTI3NCw3ICsyNzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0
ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAgc3RhdGljIGJvb2wgcmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CiAKLSAgICAgICAgc3RhdGljIGNv
bnN0IFY4RXh0ZW5zaW9ucyYgZXh0ZW5zaW9ucygpIHsgcmV0dXJuIG1fZXh0ZW5zaW9uczsgfQor
ICAgICAgICBzdGF0aWMgY29uc3QgVjhFeHRlbnNpb25zJiBleHRlbnNpb25zKCk7CiAKICAgICAg
ICAgLy8gUmVwb3J0IGFuIHVuc2FmZSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgZ2l2ZW4gZnJhbWUg
b24gdGhlIGNvbnNvbGUuCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZUFjY2Vzc1Rv
KEZyYW1lKiB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
bnBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAK
aW5kZXggYTBlY2Q1M2I2MDllMjc0ZTgwMTM3YzBkNjliNTEzYmNjYmM2ODhiNS4uOGQ4MGNmOTMz
MTg2ZTg1NDdjMTg1MTgzZDdlNzQ4NGJjZTFlODRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ucHJ1bnRpbWUuY3BwCkBAIC0zNTYsNjcgKzM1Niw3NSBAQCB0eXBlZGVmIFdURjo6SGFz
aE1hcDxOUE9iamVjdCosIE5QT2JqZWN0Kj4gTlBPYmplY3RNYXA7CiB0eXBlZGVmIFdURjo6SGFz
aE1hcDxOUE9iamVjdCosIE5QT2JqZWN0U2V0Kj4gTlBSb290T2JqZWN0TWFwOwogCiAvLyBBIG1h
cCBvZiBsaXZlIE5QT2JqZWN0cyB3aXRoIHBvaW50ZXJzIHRvIHRoZWlyIFJvb3RzLgotTlBPYmpl
Y3RNYXAgbGl2ZU9iamVjdE1hcDsKK3N0YXRpYyBOUE9iamVjdE1hcCYgbGl2ZU9iamVjdE1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOUE9iamVjdE1hcCwgb2JqZWN0TWFwLCAoKSk7
CisgICAgcmV0dXJuIG9iamVjdE1hcDsKK30KIAogLy8gQSBtYXAgb2YgdGhlIHJvb3Qgb2JqZWN0
cyBhbmQgdGhlIGxpc3Qgb2YgTlBPYmplY3RzCiAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBvYmpl
Y3QuCi1OUFJvb3RPYmplY3RNYXAgcm9vdE9iamVjdE1hcDsKK3N0YXRpYyBOUFJvb3RPYmplY3RN
YXAmIHJvb3RPYmplY3RNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTlBSb290T2Jq
ZWN0TWFwLCBvYmplY3RNYXAsICgpKTsKKyAgICByZXR1cm4gb2JqZWN0TWFwOworfQogCiB2b2lk
IF9OUE5fUmVnaXN0ZXJPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBOUE9iamVjdCogb3duZXIp
CiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKIAogICAgIC8vIENoZWNrIGlmIGFscmVhZHkgcmVn
aXN0ZXJlZC4KLSAgICBpZiAobGl2ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2Jq
ZWN0TWFwLmVuZCgpKQorICAgIGlmIChsaXZlT2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0g
bGl2ZU9iamVjdE1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW93bmVy
KSB7CiAgICAgICAgIC8vIFJlZ2lzdGVyaW5nIGEgbmV3IG93bmVyIG9iamVjdC4KLSAgICAgICAg
QVNTRVJUKHJvb3RPYmplY3RNYXAuZmluZChucE9iamVjdCkgPT0gcm9vdE9iamVjdE1hcC5lbmQo
KSk7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAuc2V0KG5wT2JqZWN0LCBuZXcgTlBPYmplY3RTZXQo
KSk7CisgICAgICAgIEFTU0VSVChyb290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgPT0gcm9v
dE9iamVjdE1hcCgpLmVuZCgpKTsKKyAgICAgICAgcm9vdE9iamVjdE1hcCgpLnNldChucE9iamVj
dCwgbmV3IE5QT2JqZWN0U2V0KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFsd2F5cyBh
c3NvY2lhdGUgdGhpcyBvYmplY3Qgd2l0aCBpdCdzIHRvcC1tb3N0IHBhcmVudC4KICAgICAgICAg
Ly8gU2luY2Ugd2UgYWx3YXlzIGZsYXR0ZW4sIHdlIG9ubHkgaGF2ZSB0byBsb29rIHVwIG9uZSBs
ZXZlbC4KLSAgICAgICAgTlBPYmplY3RNYXA6Oml0ZXJhdG9yIG93bmVyRW50cnkgPSBsaXZlT2Jq
ZWN0TWFwLmZpbmQob3duZXIpOworICAgICAgICBOUE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJF
bnRyeSA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG93bmVyKTsKICAgICAgICAgTlBPYmplY3QqIHBh
cmVudCA9IDA7Ci0gICAgICAgIGlmIChsaXZlT2JqZWN0TWFwLmVuZCgpICE9IG93bmVyRW50cnkp
CisgICAgICAgIGlmIChsaXZlT2JqZWN0TWFwKCkuZW5kKCkgIT0gb3duZXJFbnRyeSkKICAgICAg
ICAgICAgIHBhcmVudCA9IG93bmVyRW50cnktPnNlY29uZDsKIAogICAgICAgICBpZiAocGFyZW50
KQogICAgICAgICAgICAgb3duZXIgPSBwYXJlbnQ7Ci0gICAgICAgIEFTU0VSVChyb290T2JqZWN0
TWFwLmZpbmQobnBPYmplY3QpID09IHJvb3RPYmplY3RNYXAuZW5kKCkpOwotICAgICAgICBpZiAo
cm9vdE9iamVjdE1hcC5maW5kKG93bmVyKSAhPSByb290T2JqZWN0TWFwLmVuZCgpKQotICAgICAg
ICAgICAgcm9vdE9iamVjdE1hcC5nZXQob3duZXIpLT5hZGQobnBPYmplY3QpOworICAgICAgICBB
U1NFUlQocm9vdE9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpID09IHJvb3RPYmplY3RNYXAoKS5l
bmQoKSk7CisgICAgICAgIGlmIChyb290T2JqZWN0TWFwKCkuZmluZChvd25lcikgIT0gcm9vdE9i
amVjdE1hcCgpLmVuZCgpKQorICAgICAgICAgICAgcm9vdE9iamVjdE1hcCgpLmdldChvd25lcikt
PmFkZChucE9iamVjdCk7CiAgICAgfQogCi0gICAgQVNTRVJUKGxpdmVPYmplY3RNYXAuZmluZChu
cE9iamVjdCkgPT0gbGl2ZU9iamVjdE1hcC5lbmQoKSk7Ci0gICAgbGl2ZU9iamVjdE1hcC5zZXQo
bnBPYmplY3QsIG93bmVyKTsKKyAgICBBU1NFUlQobGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmpl
Y3QpID09IGxpdmVPYmplY3RNYXAoKS5lbmQoKSk7CisgICAgbGl2ZU9iamVjdE1hcCgpLnNldChu
cE9iamVjdCwgb3duZXIpOwogfQogCiB2b2lkIF9OUE5fVW5yZWdpc3Rlck9iamVjdChOUE9iamVj
dCogbnBPYmplY3QpCiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKLSAgICBBU1NFUlQobGl2ZU9i
amVjdE1hcC5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwLmVuZCgpKTsKKyAgICBBU1NF
UlQobGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAoKS5lbmQo
KSk7CiAKICAgICBOUE9iamVjdCogb3duZXIgPSAwOwotICAgIGlmIChsaXZlT2JqZWN0TWFwLmZp
bmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAuZW5kKCkpCi0gICAgICAgIG93bmVyID0gbGl2
ZU9iamVjdE1hcC5maW5kKG5wT2JqZWN0KS0+c2Vjb25kOworICAgIGlmIChsaXZlT2JqZWN0TWFw
KCkuZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVjdE1hcCgpLmVuZCgpKQorICAgICAgICBvd25l
ciA9IGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KS0+c2Vjb25kOwogCiAgICAgaWYgKCFv
d25lcikgewogICAgICAgICAvLyBVbnJlZ2lzdGVyaW5nIGEgb3duZXIgb2JqZWN0OyBhbHNvIHVu
cmVnaXN0ZXIgaXQncyBkZXNjZW5kYW50cy4KLSAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAu
ZmluZChucE9iamVjdCkgIT0gcm9vdE9iamVjdE1hcC5lbmQoKSk7Ci0gICAgICAgIE5QT2JqZWN0
U2V0KiBzZXQgPSByb290T2JqZWN0TWFwLmdldChucE9iamVjdCk7CisgICAgICAgIEFTU0VSVChy
b290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKTsK
KyAgICAgICAgTlBPYmplY3RTZXQqIHNldCA9IHJvb3RPYmplY3RNYXAoKS5nZXQobnBPYmplY3Qp
OwogICAgICAgICB3aGlsZSAoc2V0LT5zaXplKCkgPiAwKSB7CiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICAgICAgaW50IHNpemUgPSBzZXQtPnNpemUoKTsKICNlbmRpZgogICAgICAgICAgICAgTlBP
YmplY3QqIHN1Yl9vYmplY3QgPSAqKHNldC0+YmVnaW4oKSk7CiAgICAgICAgICAgICAvLyBUaGUg
c3ViLW9iamVjdCBzaG91bGQgbm90IGJlIGEgb3duZXIhCi0gICAgICAgICAgICBBU1NFUlQocm9v
dE9iamVjdE1hcC5maW5kKHN1Yl9vYmplY3QpID09IHJvb3RPYmplY3RNYXAuZW5kKCkpOworICAg
ICAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAoKS5maW5kKHN1Yl9vYmplY3QpID09IHJvb3RP
YmplY3RNYXAoKS5lbmQoKSk7CiAKICAgICAgICAgICAgIC8vIEZpcnN0LCB1bnJlZ2lzdGVyIHRo
ZSBvYmplY3QuCiAgICAgICAgICAgICBzZXQtPnJlbW92ZShzdWJfb2JqZWN0KTsKLSAgICAgICAg
ICAgIGxpdmVPYmplY3RNYXAucmVtb3ZlKHN1Yl9vYmplY3QpOworICAgICAgICAgICAgbGl2ZU9i
amVjdE1hcCgpLnJlbW92ZShzdWJfb2JqZWN0KTsKIAogICAgICAgICAgICAgLy8gU2NyaXB0IG9i
amVjdHMgaG9sZCBhIHJlZmVybmNlIHRvIHRoZWlyIERPTVdpbmRvdyosIHdoaWNoIGlzIGdvaW5n
IGF3YXkgaWYKICAgICAgICAgICAgIC8vIHdlJ3JlIHVucmVnaXN0ZXJpbmcgdGhlIGFzc29jaWF0
ZWQgb3duZXIgTlBPYmplY3QuIENsZWFyIGl0IG91dC4KQEAgLTQzMSwyMyArNDM5LDIzIEBAIHZv
aWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICAgICAgICAg
IEFTU0VSVChzZXQtPnNpemUoKSA8IHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBz
ZXQ7Ci0gICAgICAgIHJvb3RPYmplY3RNYXAucmVtb3ZlKG5wT2JqZWN0KTsKKyAgICAgICAgcm9v
dE9iamVjdE1hcCgpLnJlbW92ZShucE9iamVjdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTlBS
b290T2JqZWN0TWFwOjppdGVyYXRvciBvd25lckVudHJ5ID0gcm9vdE9iamVjdE1hcC5maW5kKG93
bmVyKTsKLSAgICAgICAgaWYgKG93bmVyRW50cnkgIT0gcm9vdE9iamVjdE1hcC5lbmQoKSkgewor
ICAgICAgICBOUFJvb3RPYmplY3RNYXA6Oml0ZXJhdG9yIG93bmVyRW50cnkgPSByb290T2JqZWN0
TWFwKCkuZmluZChvd25lcik7CisgICAgICAgIGlmIChvd25lckVudHJ5ICE9IHJvb3RPYmplY3RN
YXAoKS5lbmQoKSkgewogICAgICAgICAgICAgTlBPYmplY3RTZXQqIGxpc3QgPSBvd25lckVudHJ5
LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NFUlQobGlzdC0+ZmluZChucE9iamVjdCkgIT0gbGlz
dC0+ZW5kKCkpOwogICAgICAgICAgICAgbGlzdC0+cmVtb3ZlKG5wT2JqZWN0KTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGxpdmVPYmplY3RNYXAucmVtb3ZlKG5wT2JqZWN0KTsKKyAgICBsaXZl
T2JqZWN0TWFwKCkucmVtb3ZlKG5wT2JqZWN0KTsKICAgICBmb3JnZXRWOE9iamVjdEZvck5QT2Jq
ZWN0KG5wT2JqZWN0KTsKIH0KIAogYm9vbCBfTlBOX0lzQWxpdmUoTlBPYmplY3QqIG5wT2JqZWN0
KQogewotICAgIHJldHVybiBsaXZlT2JqZWN0TWFwLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmpl
Y3RNYXAuZW5kKCk7CisgICAgcmV0dXJuIGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAh
PSBsaXZlT2JqZWN0TWFwKCkuZW5kKCk7CiB9CiAKIH0gIC8vIGV4dGVybiAiQyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNw
cAppbmRleCAyNDA0OTRmNTk3MDA2NWVhNmQ2YzcxOGM3ZDNmYmY5YzAyNGVmMWJmLi5jN2Y4Nzll
MjIwNGY3OTU0ODliYjVhYjdmNmY3ZDk0YTk3MDA0MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCkBAIC02Mywy
NCArNjMsMjggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVmcmVzaDsKIH07CiAKLXN0YXRpYyBQ
bHVnaW5DYWNoZSBwbHVnaW5DYWNoZTsKK3N0YXRpYyBQbHVnaW5DYWNoZSYgcGx1Z2luQ2FjaGUo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGx1Z2luQ2FjaGUsIGNhY2hlLCAoKSk7Cisg
ICAgcmV0dXJuIGNhY2hlOworfQogCiB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0
IFBhZ2UqKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdp
bkNhY2hlLnBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMg
PSBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBs
dWdpbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fcGx1Z2lucy5hcHBlbmQocGx1Z2luc1tpXSk7
CiB9CiAKIHZvaWQgUGx1Z2luRGF0YTo6cmVmcmVzaCgpCiB7Ci0gICAgcGx1Z2luQ2FjaGUucmVz
ZXQodHJ1ZSk7Ci0gICAgcGx1Z2luQ2FjaGUucGx1Z2lucygpOyAgLy8gRm9yY2UgdGhlIHBsdWdp
bnMgdG8gYmUgcmVsb2FkZWQgbm93LgorICAgIHBsdWdpbkNhY2hlKCkucmVzZXQodHJ1ZSk7Cisg
ICAgcGx1Z2luQ2FjaGUoKS5wbHVnaW5zKCk7IC8vIEZvcmNlIHRoZSBwbHVnaW5zIHRvIGJlIHJl
bG9hZGVkIG5vdy4KIH0KIAogU3RyaW5nIGdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4m
IHBsdWdpbnMgPSBwbHVnaW5DYWNoZS5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdp
bkluZm8+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUoKS5wbHVnaW5zKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgcGx1Z2luc1tpXS5taW1lcy5zaXplKCk7ICsraikgewogICAgICAgICAgICAg
Y29uc3QgTWltZUNsYXNzSW5mbyYgbWltZSA9IHBsdWdpbnNbaV0ubWltZXNbal07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114084</attachid>
            <date>2011-11-08 08:50:25 -0800</date>
            <delta_ts>2011-11-08 10:20:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71760-20111108085024.patch</filename>
            <type>text/plain</type>
            <size>18633</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzOTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDEyMTUyMGUzNWUyODdi
ZDBhNTdiYmNmNjA5ZDA0M2EwYWM1ZTVjLi4yYTM4ZWJmODM3YjdmYjFjMTRmMzQ3NDdmZjQ4MjI5
NGQ5OTA0Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEtMDcgIE5pY28g
V2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3Zl
IDYgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGFuZCA2IHN0YXRpYyBpbml0aWFsaXplcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCisKKyAgICAgICAgRG8gdGhpcyBieSBtb3Zpbmcg
Z2xvYmFsIHN0YXRpY3MgaW50byBmdW5jdGlvbi1sb2NhbCBzdGF0aWNzLCBhbmQgdXNpbmcKKyAg
ICAgICAgREVGSU5FX0xPQ0FMX1NUQVRJQyB0byBsZWFrIHRoZW0uIFNpbmNlIHRoaXMgY29kZSBp
cyBhY2Nlc3NlZCBvbiBhIHNpbmdsZQorICAgICAgICB0aHJlYWQsIHRoaXMgaXMgYSBzYWZlIGNo
YW5nZSB0byBtYWtlLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZSwgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0R0NF
dmVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRHQ0V2ZW50
OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdDRXZlbnQ6
OmdjRXBpbG9ndWVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0R0NFdmVu
dC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3RhdGljVGVtcGxhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6d2Vha1RlbXBsYXRl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdGF0aWNOUE9iamVjdE1hcCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWFr
TlBPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVWOE9iamVjdEZvck5Q
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Rh
dGljRXh0ZW5zaW9uc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0ZXJl
ZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpleHRlbnNpb25zKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvbnBydW50
aW1lLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpy
ZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVuc2lv
bik6CisKIDIwMTEtMTEtMDYgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgog
CiAgICAgICAgIEZpeCBzb21lIHN0eWxlIGlzc3VlcyBpbiBJbWFnZUJ1ZmZlci5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdDRXZlbnQuY3BwCmluZGV4IDU1YTgwM2YyYjZh
YWIwMDM0ZWQ2YTgwY2ZiNDk4ZTNmM2JjODlkM2YuLjA0YzVlMGY0ZmEwNTYxMGUwYjg5NzgxN2I5
N2NlNGE1ZjM0NzAxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEdDRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdD
RXZlbnQuY3BwCkBAIC0zOSwyOCArMzksMzQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
Y3JpcHRHQ0V2ZW50OjpHQ0V2ZW50TGlzdGVuZXJzIFNjcmlwdEdDRXZlbnQ6OnNfZXZlbnRMaXN0
ZW5lcnM7Cit0eXBlZGVmIFZlY3RvcjxTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqPiBHQ0V2ZW50TGlz
dGVuZXJzOworc3RhdGljIEdDRXZlbnRMaXN0ZW5lcnMmIGV2ZW50TGlzdGVuZXJzKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEdDRXZlbnRMaXN0ZW5lcnMsIGxpc3RlbmVycywgKCkpOwor
ICAgIHJldHVybiBsaXN0ZW5lcnM7Cit9CisKIGRvdWJsZSBTY3JpcHRHQ0V2ZW50OjpzX3N0YXJ0
VGltZSA9IDAuMDsKIHNpemVfdCBTY3JpcHRHQ0V2ZW50OjpzX3VzZWRIZWFwU2l6ZSA9IDA7CiAK
IHZvaWQgU2NyaXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVu
ZXIqIGV2ZW50TGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKGV2ZW50TGlzdGVuZXIpOwotICAgIGlm
IChzX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgIGlmIChldmVudExpc3RlbmVycygp
LmlzRW1wdHkoKSkgewogICAgICAgICB2ODo6Vjg6OkFkZEdDUHJvbG9ndWVDYWxsYmFjayhTY3Jp
cHRHQ0V2ZW50OjpnY1Byb2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6Vjg6OkFkZEdDRXBp
bG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOwogICAgIH0K
LSAgICBzX2V2ZW50TGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICBldmVudExp
c3RlbmVycygpLmFwcGVuZChldmVudExpc3RlbmVyKTsKIH0KIAogdm9pZCBTY3JpcHRHQ0V2ZW50
OjpyZW1vdmVFdmVudExpc3RlbmVyKFNjcmlwdEdDRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5l
cikKIHsKICAgICBBU1NFUlQoZXZlbnRMaXN0ZW5lcik7Ci0gICAgQVNTRVJUKCFzX2V2ZW50TGlz
dGVuZXJzLmlzRW1wdHkoKSk7Ci0gICAgc2l6ZV90IGkgPSBzX2V2ZW50TGlzdGVuZXJzLmZpbmQo
ZXZlbnRMaXN0ZW5lcik7CisgICAgQVNTRVJUKCFldmVudExpc3RlbmVycygpLmlzRW1wdHkoKSk7
CisgICAgc2l6ZV90IGkgPSBldmVudExpc3RlbmVycygpLmZpbmQoZXZlbnRMaXN0ZW5lcik7CiAg
ICAgQVNTRVJUKGkgIT0gbm90Rm91bmQpOwotICAgIHNfZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKGkp
OwotICAgIGlmIChzX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgIGV2ZW50TGlzdGVu
ZXJzKCkucmVtb3ZlKGkpOworICAgIGlmIChldmVudExpc3RlbmVycygpLmlzRW1wdHkoKSkgewog
ICAgICAgICB2ODo6Vjg6OlJlbW92ZUdDUHJvbG9ndWVDYWxsYmFjayhTY3JpcHRHQ0V2ZW50Ojpn
Y1Byb2xvZ3VlQ2FsbGJhY2spOwogICAgICAgICB2ODo6Vjg6OlJlbW92ZUdDRXBpbG9ndWVDYWxs
YmFjayhTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2spOwogICAgIH0KQEAgLTkyLDcg
Kzk4LDcgQEAgdm9pZCBTY3JpcHRHQ0V2ZW50OjpnY0VwaWxvZ3VlQ2FsbGJhY2sodjg6OkdDVHlw
ZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWcKIHsKICAgICBkb3VibGUgZW5kVGltZSA9
IFdURjo6Y3VycmVudFRpbWVNUygpOwogICAgIHNpemVfdCBjb2xsZWN0ZWRCeXRlcyA9IHNfdXNl
ZEhlYXBTaXplIC0gZ2V0VXNlZEhlYXBTaXplKCk7Ci0gICAgR0NFdmVudExpc3RlbmVycyBsaXN0
ZW5lcnMoc19ldmVudExpc3RlbmVycyk7CisgICAgR0NFdmVudExpc3RlbmVycyBsaXN0ZW5lcnMo
ZXZlbnRMaXN0ZW5lcnMoKSk7CiAgICAgZm9yIChHQ0V2ZW50TGlzdGVuZXJzOjppdGVyYXRvciBp
ID0gbGlzdGVuZXJzLmJlZ2luKCk7IGkgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2kpCiAgICAgICAg
ICgqaSktPmRpZEdDKHNfc3RhcnRUaW1lLCBlbmRUaW1lLCBjb2xsZWN0ZWRCeXRlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRHQ0V2ZW50LmgKaW5kZXggMmZmZDk0MGY5
MzQ2YmM2YTViZmFkZDhmNjRmOWI5ZDRmYzdmYTdlNi4uMDY0NGE4NTBiOWUxN2I4OTg1MWZlYjhk
MmZkNDhiZWI2NTc2NTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0R0NFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEdD
RXZlbnQuaApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihTY3JpcHRHQ0V2ZW50TGlzdGVuZXIqKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRIZWFwU2l6ZShzaXplX3QmLCBzaXplX3QmLCBzaXplX3QmKTsKIHByaXZhdGU6Ci0gICAgdHlw
ZWRlZiBWZWN0b3I8U2NyaXB0R0NFdmVudExpc3RlbmVyKj4gR0NFdmVudExpc3RlbmVyczsKLSAg
ICBzdGF0aWMgR0NFdmVudExpc3RlbmVycyBzX2V2ZW50TGlzdGVuZXJzOwogICAgIHN0YXRpYyBk
b3VibGUgc19zdGFydFRpbWU7CiAgICAgc3RhdGljIHNpemVfdCBzX3VzZWRIZWFwU2l6ZTsKICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggNjkxNTA1ODFh
Y2Q5MmI3OTBkMGUzOWMwN2VmNmUzNWE4NWU1MDRjYy4uZTQzZDI3ZTY0MDlkZWUyNWE4YWVlNzI2
OTcwYTQ3ZTUyNjAwNWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVj
dC5jcHAKQEAgLTE2MywxNSArMTYzLDIwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVj
dEludm9rZURlZmF1bHRIYW5kbGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiBzdGF0aWMg
dm9pZCB3ZWFrVGVtcGxhdGVDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lk
KiBwYXJhbWV0ZXIpOwogCiAvLyBOUElkZW50aWZpZXIgaXMgUHJpdmF0ZUlkZW50aWZpZXIqLgot
c3RhdGljIFdlYWtSZWZlcmVuY2VNYXA8UHJpdmF0ZUlkZW50aWZpZXIsIHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBzdGF0aWNUZW1wbGF0ZU1hcCgmd2Vha1RlbXBsYXRlQ2FsbGJhY2spOworc3RhdGlj
IFdlYWtSZWZlcmVuY2VNYXA8UHJpdmF0ZUlkZW50aWZpZXIsIHY4OjpGdW5jdGlvblRlbXBsYXRl
PiYgc3RhdGljVGVtcGxhdGVNYXAoKQoreworICAgIHR5cGVkZWYgV2Vha1JlZmVyZW5jZU1hcDxQ
cml2YXRlSWRlbnRpZmllciwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU+IE1hcFR5cGU7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNYXBUeXBlLCB0ZW1wbGF0ZU1hcCwgKCZ3ZWFrVGVtcGxhdGVDYWxs
YmFjaykpOworICAgIHJldHVybiB0ZW1wbGF0ZU1hcDsKK30KIAogc3RhdGljIHZvaWQgd2Vha1Rl
bXBsYXRlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBh
cmFtZXRlcikKIHsKICAgICBQcml2YXRlSWRlbnRpZmllciogaWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PFByaXZhdGVJZGVudGlmaWVyKj4ocGFyYW1ldGVyKTsKICAgICBBU1NFUlQoaWRlbnRpZmll
cik7Ci0gICAgQVNTRVJUKHN0YXRpY1RlbXBsYXRlTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KyAgICBBU1NFUlQoc3RhdGljVGVtcGxhdGVNYXAoKS5jb250YWlucyhpZGVudGlmaWVyKSk7CiAK
LSAgICBzdGF0aWNUZW1wbGF0ZU1hcC5mb3JnZXQoaWRlbnRpZmllcik7CisgICAgc3RhdGljVGVt
cGxhdGVNYXAoKS5mb3JnZXQoaWRlbnRpZmllcik7CiB9CiAKIApAQCAtMjAxLDE0ICsyMDYsMTQg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3BlcnR5KHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKIAogICAgIGlmIChrZXktPklzU3RyaW5nKCkgJiYg
bnBPYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhhc01ldGhv
ZChucE9iamVjdCwgaWRlbnRpZmllcikpIHsKICAgICAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlk
ID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUlkZW50aWZpZXIqPihpZGVudGlmaWVyKTsKLSAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUgPSBz
dGF0aWNUZW1wbGF0ZU1hcC5nZXQoaWQpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHN0YXRpY1RlbXBsYXRlTWFwKCkuZ2V0
KGlkKTsKICAgICAgICAgLy8gQ2FjaGUgdGVtcGxhdGVzIHVzaW5nIGlkZW50aWZpZXIgYXMgdGhl
IGtleS4KICAgICAgICAgaWYgKGZ1bmN0aW9uVGVtcGxhdGUuSXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgdGVtcGxhdGUuCiAgICAgICAgICAgICB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXAgPSB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCk7CiAg
ICAgICAgICAgICB0ZW1wLT5TZXRDYWxsSGFuZGxlcihucE9iamVjdE1ldGhvZEhhbmRsZXIsIGtl
eSk7CiAgICAgICAgICAgICBmdW5jdGlvblRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodGVtcCk7Ci0gICAgICAgICAgICBzdGF0aWNUZW1wbGF0ZU1h
cC5zZXQoaWQsIGZ1bmN0aW9uVGVtcGxhdGUpOworICAgICAgICAgICAgc3RhdGljVGVtcGxhdGVN
YXAoKS5zZXQoaWQsIGZ1bmN0aW9uVGVtcGxhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RnVuY3Rpb25UZW1wbGF0ZSBjYWNoZXMgZnVuY3Rpb24gZm9yIGVhY2ggY29udGV4dC4KQEAgLTM0
MSwxNyArMzQ2LDIxIEBAIHY4OjpIYW5kbGU8djg6OkFycmF5PiBucE9iamVjdEluZGV4ZWRQcm9w
ZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYKIAogc3RhdGljIHZvaWQgd2Vh
a05QT2JqZWN0Q2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogcGFyYW1l
dGVyKTsKIAotc3RhdGljIERPTVdyYXBwZXJNYXA8TlBPYmplY3Q+IHN0YXRpY05QT2JqZWN0TWFw
KCZ3ZWFrTlBPYmplY3RDYWxsYmFjayk7CitzdGF0aWMgRE9NV3JhcHBlck1hcDxOUE9iamVjdD4m
IHN0YXRpY05QT2JqZWN0TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTVdyYXBw
ZXJNYXA8TlBPYmplY3Q+LCBucE9iamVjdE1hcCwgKCZ3ZWFrTlBPYmplY3RDYWxsYmFjaykpOwor
ICAgIHJldHVybiBucE9iamVjdE1hcDsKK30KIAogc3RhdGljIHZvaWQgd2Vha05QT2JqZWN0Q2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikK
IHsKICAgICBOUE9iamVjdCogbnBPYmplY3QgPSBzdGF0aWNfY2FzdDxOUE9iamVjdCo+KHBhcmFt
ZXRlcik7Ci0gICAgQVNTRVJUKHN0YXRpY05QT2JqZWN0TWFwLmNvbnRhaW5zKG5wT2JqZWN0KSk7
CisgICAgQVNTRVJUKHN0YXRpY05QT2JqZWN0TWFwKCkuY29udGFpbnMobnBPYmplY3QpKTsKICAg
ICBBU1NFUlQobnBPYmplY3QpOwogCiAgICAgLy8gTXVzdCByZW1vdmUgZnJvbSBvdXIgbWFwIGJl
Zm9yZSBjYWxsaW5nIF9OUE5fUmVsZWFzZU9iamVjdCgpLiBfTlBOX1JlbGVhc2VPYmplY3QgY2Fu
IGNhbGwgRm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdCwgd2hpY2gKICAgICAvLyB1c2VzIHRoZSB0
YWJsZSBhcyB3ZWxsLgotICAgIHN0YXRpY05QT2JqZWN0TWFwLmZvcmdldChucE9iamVjdCk7Cisg
ICAgc3RhdGljTlBPYmplY3RNYXAoKS5mb3JnZXQobnBPYmplY3QpOwogCiAgICAgaWYgKF9OUE5f
SXNBbGl2ZShucE9iamVjdCkpCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7
CkBAIC0zNzEsOCArMzgwLDggQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0
Rm9yTlBPYmplY3QoTlBPYmplY3QqIG9iamVjdCwgTlBPYmplY3QqIHJvb3QKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHdyYXBwZWQgdGhpcyBvYmplY3QsIGp1c3QgcmV0dXJuIGl0
LgotICAgIGlmIChzdGF0aWNOUE9iamVjdE1hcC5jb250YWlucyhvYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc3RhdGljTlBPYmplY3RNYXAuZ2V0KG9i
amVjdCkpOworICAgIGlmIChzdGF0aWNOUE9iamVjdE1hcCgpLmNvbnRhaW5zKG9iamVjdCkpCisg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD46Ok5ldyhzdGF0aWNOUE9iamVjdE1h
cCgpLmdldChvYmplY3QpKTsKIAogICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY3JlYXRlIGEgV3Jh
cHBlciB0eXBlIGFzIGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QuIEl0IGhhcyB0d28gaW50ZXJuYWwg
ZmllbGRzLCBmaWVsZCAwIGlzIHRoZSB3cmFwcGVkCiAgICAgLy8gcG9pbnRlciwgYW5kIGZpZWxk
IDEgaXMgdGhlIHR5cGUuIFRoZXJlIHNob3VsZCBiZSBhbiBhcGkgZnVuY3Rpb24gdGhhdCByZXR1
cm5zIHVudXNlZCB0eXBlIGlkLiBUaGUgc2FtZSBXcmFwcGVyIHR5cGUKQEAgLTQwMSwxOCArNDEw
LDE4IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZvck5QT2JqZWN0KE5Q
T2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAKICAgICAvLyBNYWludGFpbiBhIHdlYWsg
cG9pbnRlciBmb3Igdjggc28gd2UgY2FuIGNsZWFudXAgdGhlIG9iamVjdC4KICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3ZWFrUmVmID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46
Ok5ldyh2YWx1ZSk7Ci0gICAgc3RhdGljTlBPYmplY3RNYXAuc2V0KG9iamVjdCwgd2Vha1JlZik7
CisgICAgc3RhdGljTlBPYmplY3RNYXAoKS5zZXQob2JqZWN0LCB3ZWFrUmVmKTsKIAogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAogdm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgaWYgKHN0YXRpY05QT2JqZWN0TWFwLmNvbnRhaW5zKG9iamVjdCkp
IHsKKyAgICBpZiAoc3RhdGljTlBPYmplY3RNYXAoKS5jb250YWlucyhvYmplY3QpKSB7CiAgICAg
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gaGFuZGxlKHN0YXRpY05QT2JqZWN0TWFwLmdldChvYmplY3QpKTsKKyAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gaGFuZGxlKHN0YXRpY05QT2JqZWN0TWFwKCkuZ2V0KG9i
amVjdCkpOwogICAgICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaGFuZGxlLCBucE9i
amVjdFR5cGVJbmZvKCksIDApOwotICAgICAgICBzdGF0aWNOUE9iamVjdE1hcC5mb3JnZXQob2Jq
ZWN0KTsKKyAgICAgICAgc3RhdGljTlBPYmplY3RNYXAoKS5mb3JnZXQob2JqZWN0KTsKICAgICAg
ICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBmNjFiZDlmZTUyOTA4MmYwNmVhMWFkYTJjZWFiODg0
Mjg3NDA1ZGFhLi5lMTY2YmMyMjFkZGU2N2M0NjJkNGU5NzcwNDIxMzExOWQ4NzMzZDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNzYsOCArNzYsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBTdGF0aWMgbGlzdCBvZiByZWdpc3RlcmVkIGV4dGVu
c2lvbnMKLVY4RXh0ZW5zaW9ucyBWOFByb3h5OjptX2V4dGVuc2lvbnM7CitzdGF0aWMgVjhFeHRl
bnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWOEV4dGVuc2lvbnMsIGV4dGVuc2lvbnMsICgpKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9uczsK
K30KIAogdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
VGVtcGxhdGU+IGluc3RhbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgCkBAIC03NTAsOCArNzUzLDkgQEAgdm9p
ZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKiBleHRlbnNp
b24pCiAKIGJvb2wgVjhQcm94eTo6cmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5z
aW9uKiBleHRlbnNpb24pCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4dGVuc2lv
bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZXh0ZW5zaW9uc1tpXSA9PSBleHRlbnNp
b24pCisgICAgY29uc3QgVjhFeHRlbnNpb25zJiByZWdpc3RlcmVkRXh0ZW5zaW9ucyA9IGV4dGVu
c2lvbnMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdGVyZWRFeHRlbnNpb25z
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChyZWdpc3RlcmVkRXh0ZW5zaW9uc1tpXSA9PSBl
eHRlbnNpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTc2MSw3ICs3
NjUsMTIgQEAgYm9vbCBWOFByb3h5OjpyZWdpc3RlcmVkRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRl
bnNpb24qIGV4dGVuc2lvbikKIHZvaWQgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4
dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KGV4dGVu
c2lvbik7Ci0gICAgbV9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOworICAgIHN0YXRpY0V4
dGVuc2lvbnNMaXN0KCkuYXBwZW5kKGV4dGVuc2lvbik7Cit9CisKK2NvbnN0IFY4RXh0ZW5zaW9u
cyYgVjhQcm94eTo6ZXh0ZW5zaW9ucygpCit7CisgICAgcmV0dXJuIHN0YXRpY0V4dGVuc2lvbnNM
aXN0KCk7CiB9CiAKIGJvb2wgVjhQcm94eTo6c2V0Q29udGV4dERlYnVnSWQoaW50IGRlYnVnSWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggMTdmMzJlNDYwM2JmZTY5MmJk
NTU2NWZkZGUxZTMxM2IxODkzZjk1MS4uNDVmMmNlNmEyZjhhYzFmYTU2NDQ5ZDg3YjZhNTg3OWJl
MGJhMjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtMjc0LDcgKzI3
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJF
eHRlbnNpb25XaXRoVjgodjg6OkV4dGVuc2lvbiopOwogICAgICAgICBzdGF0aWMgYm9vbCByZWdp
c3RlcmVkRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsKIAotICAgICAgICBzdGF0aWMg
Y29uc3QgVjhFeHRlbnNpb25zJiBleHRlbnNpb25zKCkgeyByZXR1cm4gbV9leHRlbnNpb25zOyB9
CisgICAgICAgIHN0YXRpYyBjb25zdCBWOEV4dGVuc2lvbnMmIGV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICAvLyBSZXBvcnQgYW4gdW5zYWZlIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBnaXZlbiBmcmFt
ZSBvbiB0aGUgY29uc29sZS4KICAgICAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlQWNjZXNz
VG8oRnJhbWUqIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ucHJ1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNw
cAppbmRleCBhMGVjZDUzYjYwOWUyNzRlODAxMzdjMGQ2OWI1MTNiY2NiYzY4OGI1Li44ZDgwY2Y5
MzMxODZlODU0N2MxODUxODNkN2U3NDg0YmNlMWU4NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L25wcnVudGltZS5jcHAKQEAgLTM1Niw2NyArMzU2LDc1IEBAIHR5cGVkZWYgV1RGOjpI
YXNoTWFwPE5QT2JqZWN0KiwgTlBPYmplY3QqPiBOUE9iamVjdE1hcDsKIHR5cGVkZWYgV1RGOjpI
YXNoTWFwPE5QT2JqZWN0KiwgTlBPYmplY3RTZXQqPiBOUFJvb3RPYmplY3RNYXA7CiAKIC8vIEEg
bWFwIG9mIGxpdmUgTlBPYmplY3RzIHdpdGggcG9pbnRlcnMgdG8gdGhlaXIgUm9vdHMuCi1OUE9i
amVjdE1hcCBsaXZlT2JqZWN0TWFwOworc3RhdGljIE5QT2JqZWN0TWFwJiBsaXZlT2JqZWN0TWFw
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5QT2JqZWN0TWFwLCBvYmplY3RNYXAsICgp
KTsKKyAgICByZXR1cm4gb2JqZWN0TWFwOworfQogCiAvLyBBIG1hcCBvZiB0aGUgcm9vdCBvYmpl
Y3RzIGFuZCB0aGUgbGlzdCBvZiBOUE9iamVjdHMKIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IG9i
amVjdC4KLU5QUm9vdE9iamVjdE1hcCByb290T2JqZWN0TWFwOworc3RhdGljIE5QUm9vdE9iamVj
dE1hcCYgcm9vdE9iamVjdE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOUFJvb3RP
YmplY3RNYXAsIG9iamVjdE1hcCwgKCkpOworICAgIHJldHVybiBvYmplY3RNYXA7Cit9CiAKIHZv
aWQgX05QTl9SZWdpc3Rlck9iamVjdChOUE9iamVjdCogbnBPYmplY3QsIE5QT2JqZWN0KiBvd25l
cikKIHsKICAgICBBU1NFUlQobnBPYmplY3QpOwogCiAgICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBy
ZWdpc3RlcmVkLgotICAgIGlmIChsaXZlT2JqZWN0TWFwLmZpbmQobnBPYmplY3QpICE9IGxpdmVP
YmplY3RNYXAuZW5kKCkpCisgICAgaWYgKGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAh
PSBsaXZlT2JqZWN0TWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghb3du
ZXIpIHsKICAgICAgICAgLy8gUmVnaXN0ZXJpbmcgYSBuZXcgb3duZXIgb2JqZWN0LgotICAgICAg
ICBBU1NFUlQocm9vdE9iamVjdE1hcC5maW5kKG5wT2JqZWN0KSA9PSByb290T2JqZWN0TWFwLmVu
ZCgpKTsKLSAgICAgICAgcm9vdE9iamVjdE1hcC5zZXQobnBPYmplY3QsIG5ldyBOUE9iamVjdFNl
dCgpKTsKKyAgICAgICAgQVNTRVJUKHJvb3RPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSA9PSBy
b290T2JqZWN0TWFwKCkuZW5kKCkpOworICAgICAgICByb290T2JqZWN0TWFwKCkuc2V0KG5wT2Jq
ZWN0LCBuZXcgTlBPYmplY3RTZXQoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQWx3YXlz
IGFzc29jaWF0ZSB0aGlzIG9iamVjdCB3aXRoIGl0J3MgdG9wLW1vc3QgcGFyZW50LgogICAgICAg
ICAvLyBTaW5jZSB3ZSBhbHdheXMgZmxhdHRlbiwgd2Ugb25seSBoYXZlIHRvIGxvb2sgdXAgb25l
IGxldmVsLgotICAgICAgICBOUE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJFbnRyeSA9IGxpdmVP
YmplY3RNYXAuZmluZChvd25lcik7CisgICAgICAgIE5QT2JqZWN0TWFwOjppdGVyYXRvciBvd25l
ckVudHJ5ID0gbGl2ZU9iamVjdE1hcCgpLmZpbmQob3duZXIpOwogICAgICAgICBOUE9iamVjdCog
cGFyZW50ID0gMDsKLSAgICAgICAgaWYgKGxpdmVPYmplY3RNYXAuZW5kKCkgIT0gb3duZXJFbnRy
eSkKKyAgICAgICAgaWYgKGxpdmVPYmplY3RNYXAoKS5lbmQoKSAhPSBvd25lckVudHJ5KQogICAg
ICAgICAgICAgcGFyZW50ID0gb3duZXJFbnRyeS0+c2Vjb25kOwogCiAgICAgICAgIGlmIChwYXJl
bnQpCiAgICAgICAgICAgICBvd25lciA9IHBhcmVudDsKLSAgICAgICAgQVNTRVJUKHJvb3RPYmpl
Y3RNYXAuZmluZChucE9iamVjdCkgPT0gcm9vdE9iamVjdE1hcC5lbmQoKSk7Ci0gICAgICAgIGlm
IChyb290T2JqZWN0TWFwLmZpbmQob3duZXIpICE9IHJvb3RPYmplY3RNYXAuZW5kKCkpCi0gICAg
ICAgICAgICByb290T2JqZWN0TWFwLmdldChvd25lciktPmFkZChucE9iamVjdCk7CisgICAgICAg
IEFTU0VSVChyb290T2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgPT0gcm9vdE9iamVjdE1hcCgp
LmVuZCgpKTsKKyAgICAgICAgaWYgKHJvb3RPYmplY3RNYXAoKS5maW5kKG93bmVyKSAhPSByb290
T2JqZWN0TWFwKCkuZW5kKCkpCisgICAgICAgICAgICByb290T2JqZWN0TWFwKCkuZ2V0KG93bmVy
KS0+YWRkKG5wT2JqZWN0KTsKICAgICB9CiAKLSAgICBBU1NFUlQobGl2ZU9iamVjdE1hcC5maW5k
KG5wT2JqZWN0KSA9PSBsaXZlT2JqZWN0TWFwLmVuZCgpKTsKLSAgICBsaXZlT2JqZWN0TWFwLnNl
dChucE9iamVjdCwgb3duZXIpOworICAgIEFTU0VSVChsaXZlT2JqZWN0TWFwKCkuZmluZChucE9i
amVjdCkgPT0gbGl2ZU9iamVjdE1hcCgpLmVuZCgpKTsKKyAgICBsaXZlT2JqZWN0TWFwKCkuc2V0
KG5wT2JqZWN0LCBvd25lcik7CiB9CiAKIHZvaWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2Jq
ZWN0KiBucE9iamVjdCkKIHsKICAgICBBU1NFUlQobnBPYmplY3QpOwotICAgIEFTU0VSVChsaXZl
T2JqZWN0TWFwLmZpbmQobnBPYmplY3QpICE9IGxpdmVPYmplY3RNYXAuZW5kKCkpOworICAgIEFT
U0VSVChsaXZlT2JqZWN0TWFwKCkuZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVjdE1hcCgpLmVu
ZCgpKTsKIAogICAgIE5QT2JqZWN0KiBvd25lciA9IDA7Ci0gICAgaWYgKGxpdmVPYmplY3RNYXAu
ZmluZChucE9iamVjdCkgIT0gbGl2ZU9iamVjdE1hcC5lbmQoKSkKLSAgICAgICAgb3duZXIgPSBs
aXZlT2JqZWN0TWFwLmZpbmQobnBPYmplY3QpLT5zZWNvbmQ7CisgICAgaWYgKGxpdmVPYmplY3RN
YXAoKS5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwKCkuZW5kKCkpCisgICAgICAgIG93
bmVyID0gbGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpLT5zZWNvbmQ7CiAKICAgICBpZiAo
IW93bmVyKSB7CiAgICAgICAgIC8vIFVucmVnaXN0ZXJpbmcgYSBvd25lciBvYmplY3Q7IGFsc28g
dW5yZWdpc3RlciBpdCdzIGRlc2NlbmRhbnRzLgotICAgICAgICBBU1NFUlQocm9vdE9iamVjdE1h
cC5maW5kKG5wT2JqZWN0KSAhPSByb290T2JqZWN0TWFwLmVuZCgpKTsKLSAgICAgICAgTlBPYmpl
Y3RTZXQqIHNldCA9IHJvb3RPYmplY3RNYXAuZ2V0KG5wT2JqZWN0KTsKKyAgICAgICAgQVNTRVJU
KHJvb3RPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAhPSByb290T2JqZWN0TWFwKCkuZW5kKCkp
OworICAgICAgICBOUE9iamVjdFNldCogc2V0ID0gcm9vdE9iamVjdE1hcCgpLmdldChucE9iamVj
dCk7CiAgICAgICAgIHdoaWxlIChzZXQtPnNpemUoKSA+IDApIHsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgICAgICBpbnQgc2l6ZSA9IHNldC0+c2l6ZSgpOwogI2VuZGlmCiAgICAgICAgICAgICBO
UE9iamVjdCogc3ViX29iamVjdCA9ICooc2V0LT5iZWdpbigpKTsKICAgICAgICAgICAgIC8vIFRo
ZSBzdWItb2JqZWN0IHNob3VsZCBub3QgYmUgYSBvd25lciEKLSAgICAgICAgICAgIEFTU0VSVChy
b290T2JqZWN0TWFwLmZpbmQoc3ViX29iamVjdCkgPT0gcm9vdE9iamVjdE1hcC5lbmQoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQocm9vdE9iamVjdE1hcCgpLmZpbmQoc3ViX29iamVjdCkgPT0gcm9v
dE9iamVjdE1hcCgpLmVuZCgpKTsKIAogICAgICAgICAgICAgLy8gRmlyc3QsIHVucmVnaXN0ZXIg
dGhlIG9iamVjdC4KICAgICAgICAgICAgIHNldC0+cmVtb3ZlKHN1Yl9vYmplY3QpOwotICAgICAg
ICAgICAgbGl2ZU9iamVjdE1hcC5yZW1vdmUoc3ViX29iamVjdCk7CisgICAgICAgICAgICBsaXZl
T2JqZWN0TWFwKCkucmVtb3ZlKHN1Yl9vYmplY3QpOwogCiAgICAgICAgICAgICAvLyBTY3JpcHQg
b2JqZWN0cyBob2xkIGEgcmVmZXJuY2UgdG8gdGhlaXIgRE9NV2luZG93Kiwgd2hpY2ggaXMgZ29p
bmcgYXdheSBpZgogICAgICAgICAgICAgLy8gd2UncmUgdW5yZWdpc3RlcmluZyB0aGUgYXNzb2Np
YXRlZCBvd25lciBOUE9iamVjdC4gQ2xlYXIgaXQgb3V0LgpAQCAtNDMxLDIzICs0MzksMjMgQEAg
dm9pZCBfTlBOX1VucmVnaXN0ZXJPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogICAgICAgICAg
ICAgQVNTRVJUKHNldC0+c2l6ZSgpIDwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZGVsZXRl
IHNldDsKLSAgICAgICAgcm9vdE9iamVjdE1hcC5yZW1vdmUobnBPYmplY3QpOworICAgICAgICBy
b290T2JqZWN0TWFwKCkucmVtb3ZlKG5wT2JqZWN0KTsKICAgICB9IGVsc2UgewotICAgICAgICBO
UFJvb3RPYmplY3RNYXA6Oml0ZXJhdG9yIG93bmVyRW50cnkgPSByb290T2JqZWN0TWFwLmZpbmQo
b3duZXIpOwotICAgICAgICBpZiAob3duZXJFbnRyeSAhPSByb290T2JqZWN0TWFwLmVuZCgpKSB7
CisgICAgICAgIE5QUm9vdE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJFbnRyeSA9IHJvb3RPYmpl
Y3RNYXAoKS5maW5kKG93bmVyKTsKKyAgICAgICAgaWYgKG93bmVyRW50cnkgIT0gcm9vdE9iamVj
dE1hcCgpLmVuZCgpKSB7CiAgICAgICAgICAgICBOUE9iamVjdFNldCogbGlzdCA9IG93bmVyRW50
cnktPnNlY29uZDsKICAgICAgICAgICAgIEFTU0VSVChsaXN0LT5maW5kKG5wT2JqZWN0KSAhPSBs
aXN0LT5lbmQoKSk7CiAgICAgICAgICAgICBsaXN0LT5yZW1vdmUobnBPYmplY3QpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbGl2ZU9iamVjdE1hcC5yZW1vdmUobnBPYmplY3QpOworICAgIGxp
dmVPYmplY3RNYXAoKS5yZW1vdmUobnBPYmplY3QpOwogICAgIGZvcmdldFY4T2JqZWN0Rm9yTlBP
YmplY3QobnBPYmplY3QpOwogfQogCiBib29sIF9OUE5fSXNBbGl2ZShOUE9iamVjdCogbnBPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGxpdmVPYmplY3RNYXAuZmluZChucE9iamVjdCkgIT0gbGl2ZU9i
amVjdE1hcC5lbmQoKTsKKyAgICByZXR1cm4gbGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3Qp
ICE9IGxpdmVPYmplY3RNYXAoKS5lbmQoKTsKIH0KIAogfSAgLy8gZXh0ZXJuICJDIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0u
Y3BwCmluZGV4IDI0MDQ5NGY1OTcwMDY1ZWE2ZDZjNzE4YzdkM2ZiZjljMDI0ZWYxYmYuLmM3Zjg3
OWUyMjA0Zjc5NTQ4OWJiNWFiN2Y2ZjdkOTRhOTcwMDQyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAKQEAgLTYz
LDI0ICs2MywyOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZWZyZXNoOwogfTsKIAotc3RhdGlj
IFBsdWdpbkNhY2hlIHBsdWdpbkNhY2hlOworc3RhdGljIFBsdWdpbkNhY2hlJiBwbHVnaW5DYWNo
ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQbHVnaW5DYWNoZSwgY2FjaGUsICgpKTsK
KyAgICByZXR1cm4gY2FjaGU7Cit9CiAKIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29u
c3QgUGFnZSopCiB7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0gcGx1
Z2luQ2FjaGUucGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lu
cyA9IHBsdWdpbkNhY2hlKCkucGx1Z2lucygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ld
KTsKIH0KIAogdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKIHsKLSAgICBwbHVnaW5DYWNoZS5y
ZXNldCh0cnVlKTsKLSAgICBwbHVnaW5DYWNoZS5wbHVnaW5zKCk7ICAvLyBGb3JjZSB0aGUgcGx1
Z2lucyB0byBiZSByZWxvYWRlZCBub3cuCisgICAgcGx1Z2luQ2FjaGUoKS5yZXNldCh0cnVlKTsK
KyAgICBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsgLy8gRm9yY2UgdGhlIHBsdWdpbnMgdG8gYmUg
cmVsb2FkZWQgbm93LgogfQogCiBTdHJpbmcgZ2V0UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
PiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UGx1
Z2luSW5mbz4mIHBsdWdpbnMgPSBwbHVnaW5DYWNoZSgpLnBsdWdpbnMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBwbHVnaW5zW2ldLm1pbWVzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAg
ICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lID0gcGx1Z2luc1tpXS5taW1lc1tqXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>