<?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>82238</bug_id>
          
          <creation_ts>2012-03-26 13:26:08 -0700</creation_ts>
          <short_desc>Use PassRefPtr in V8DOMWrapper interface to avoid explicit ref() calls</short_desc>
          <delta_ts>2012-04-04 18:38:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82914</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588067</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-26 13:26:08 -0700</bug_when>
    <thetext>Use PassRefPtr in V8DOMWrapper interface to avoid explicit ref() calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588074</commentid>
    <comment_count>1</comment_count>
      <attachid>133878</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-26 13:34:02 -0700</bug_when>
    <thetext>Created attachment 133878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588134</commentid>
    <comment_count>2</comment_count>
      <attachid>133878</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-26 14:37:56 -0700</bug_when>
    <thetext>Comment on attachment 133878
Patch

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

In the words of dglazkov, the old version of this code was awesome.

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:417
&gt; -    V8DOMWrapper::setJSWrapperForDOMObject(window, v8::Persistent&lt;v8::Object&gt;::New(jsWindow));
&gt; +    V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr&lt;DOMWindow&gt;(window), v8::Persistent&lt;v8::Object&gt;::New(jsWindow));

I don&apos;t think you need to call the constructor explicitly.  The call should be generated implicitly.

&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:113
&gt;      // Add object to the wrapper map.

Mayvbe remove this useless comment?

&gt; Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:68
&gt;      // Add object to the wrapper map.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588147</commentid>
    <comment_count>3</comment_count>
      <attachid>133878</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-26 14:45:17 -0700</bug_when>
    <thetext>Comment on attachment 133878
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:417
&gt;&gt; +    V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr&lt;DOMWindow&gt;(window), v8::Persistent&lt;v8::Object&gt;::New(jsWindow));
&gt; 
&gt; I don&apos;t think you need to call the constructor explicitly.  The call should be generated implicitly.

I thought so too, but it won&apos;t compile without. Seems like the compiler can&apos;t figure out that DOMWindow* is implicitly convertible to PassRefPtr&lt;DOMWindow&gt; when it&apos;s doing template specialization.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:113
&gt;&gt;      // Add object to the wrapper map.
&gt; 
&gt; Mayvbe remove this useless comment?

Removed (and the one above).

&gt;&gt; Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:68
&gt;&gt;      // Add object to the wrapper map.
&gt; 
&gt; Ditto.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588148</commentid>
    <comment_count>4</comment_count>
      <attachid>133895</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-26 14:45:40 -0700</bug_when>
    <thetext>Created attachment 133895
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588240</commentid>
    <comment_count>5</comment_count>
      <attachid>133895</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 15:57:40 -0700</bug_when>
    <thetext>Comment on attachment 133895
Patch for landing

Clearing flags on attachment: 133895

Committed r112163: &lt;http://trac.webkit.org/changeset/112163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588242</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 15:57:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596065</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-04 16:16:34 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596066</commentid>
    <comment_count>8</comment_count>
      <attachid>135708</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-04 16:16:36 -0700</bug_when>
    <thetext>Created attachment 135708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596127</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-04 17:20:45 -0700</bug_when>
    <thetext>&gt; Reopening to attach new patch.

What&apos;s changed in the new patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596133</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-04 17:25:29 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Reopening to attach new patch.
&gt; 
&gt; What&apos;s changed in the new patch?

I put this in the ChangeLog:

      Relanding r112163 without modification, as it still seems valid.
      Will watch Chrome Canaries closely for any memory issues.

I tried renaming the method to ensure I&apos;d caught all callers and I had. So I suspect there&apos;s nothing wrong with this patch. Note that the OOM failures I&apos;ve gotten complaints about had both this and the &quot;always use setJSWrapper*&quot; patch (r112318). So my plan is to leave this patch alone on trunk for awhile to shake out any problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596135</commentid>
    <comment_count>11</comment_count>
      <attachid>135728</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-04 17:29:46 -0700</bug_when>
    <thetext>Created attachment 135728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596136</commentid>
    <comment_count>12</comment_count>
      <attachid>135728</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-04 17:30:26 -0700</bug_when>
    <thetext>Comment on attachment 135728
Patch

Ok.  I missed that part of the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596199</commentid>
    <comment_count>13</comment_count>
      <attachid>135728</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 18:38:44 -0700</bug_when>
    <thetext>Comment on attachment 135728
Patch

Clearing flags on attachment: 135728

Committed r113272: &lt;http://trac.webkit.org/changeset/113272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596200</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 18:38:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133878</attachid>
            <date>2012-03-26 13:34:02 -0700</date>
            <delta_ts>2012-03-26 14:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82238-20120326133401.patch</filename>
            <type>text/plain</type>
            <size>14411</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyMDE0OTVmMjU4ZWYw
YWU1ZTUyNDk3MDU2NmY5M2ZhMjhlZTQzMS4uYWM1NThhZWY5ODdiZDVmNGMwYTI3ZmQ2OTYwYWMw
ZTU4NTdmMzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTI2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBQYXNzUmVmUHRyIGlu
IFY4RE9NV3JhcHBlciBpbnRlcmZhY2UgdG8gYXZvaWQgZXhwbGljaXQgcmVmKCkgY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNldEpTV3Jh
cHBlciogbWV0aG9kcyBwcmV2aW91c2x5IGZlYXR1cmVkIGEgY29tbWVudCB0aGF0IGFza2VkCisg
ICAgICAgIGNhbGxlcnMgdG8gcmVmIHRoZSBvYmplY3RzIGJlZm9yZSBwYXNzaW5nIHRoZW0gaW4u
IFRoaXMgY2hhbmdlIG1ha2VzCisgICAgICAgIHRoYXQgY29udHJhY3QgZXhwbGljaXQgKGFuZCBh
bGxvd3MgdGhlIHJlbW92YWwgb2YgdGhlIGNvbW1lbnQpLgorCisgICAgICAgIEluIGFkZGl0aW9u
LCBmb3IgQ29uc3RydWN0b3JDYWxsYmFja3MsIHRoaXMgY2hhbmdlIHNsaWdodGx5IHJlZHVjZXMK
KyAgICAgICAgcmVmY291bnQgY2h1cm4gYnkgcGFzc2luZyBvbiB0aGUgaW5pdGlhbCByZWYgdmlh
IFJlZlB0cjo6cmVsZWFzZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2spOiBVc2UgUmVmUHRyOjpy
ZWxlYXNlKCkgdG8gYXZvaWQgcmVmY291bnQgY2h1cm4gYW5kIHJlbW92ZSBleHBsaWNpdCByZWYo
KSBjYWxsLgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOiBkaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3cpOiBDYXN0IHRvIGEg
UGFzc1JlZlB0ciBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZiBjYWxsLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU5vZGUpOiBQYXNzIGxlYWtlZCByZWZzIGludG8gdGhlIERPTU5v
ZGVNYXBzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAo
VjhET01XcmFwcGVyKTogTWFrZSB0aGUgc2V0SlNXcmFwcGVyRm9yKiBtZXRob2RzIHRha2UgUGFz
c1JlZlB0cjxUPi4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KTogUGFzcyBsZWFrZWQgcmVmIGludG8gdGhlIERPTU9iamVjdE1hcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2Jq
ZWN0KTogUGFzcyBsZWFrZWQgcmVmIGludG8gdGhlIEFjdGl2ZURPTU9iamVjdE1hcC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KTogUmVt
b3ZlIGV4cGxpY2l0IHJlZi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKTogQ2FzdCB0byBhIFBhc3NSZWZQVHIgYW5kIHJl
bW92ZSBleHBsaWNpdCByZWYgY2FsbC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk6IFVzZSBSZWZQdHI6OnJlbGVhc2UoKSB0
byBhdm9pZCByZWZjb3VudCBjaHVybiBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZi4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JD
YWxsYmFjayk6IGRpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tl
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JD
YWxsYmFjayk6IGRpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVz
dDo6Y29uc3RydWN0b3JDYWxsYmFjayk6IGRpdHRvLgorCiAyMDEyLTAzLTI2ICBTdGVwaGVuIENo
ZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmFpbHVyZSB0byBpbnZh
bGlkYXRlIHRleHQgcG9zaXRpb24gYXR0cmlidXRlcyB3aGVuIERPTSBjaGFuZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDM0ZWRkOTA2NjAzMjQyM2ViMGQwZWU1MmMxMmUyYmIxMWUyMTEwZGQuLmNiNGUzNDI0ZTIzZWI1
Y2JiYWU0ZjUxOTg3NDgxMzY5ZmJlN2EyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNzYyLDggKzE3NjIsNyBAQCBF
TkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiAgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKLSAgICBpbXBsLT5yZWYo
KTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLmdl
dCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsKKyAgICBWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLnJlbGVhc2UoKSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CiAgICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7CiBFTkQKIApAQCAtMTk0NCw4ICsxOTQzLDcgQEAgRU5ECiAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFw
cGVyLCAmVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OmluZm8sIGltcGwuZ2V0KCkpOwot
ICAgIGltcGwtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01P
YmplY3R9KGltcGwuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBl
cikpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwu
cmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsKICAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIEVORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGQ1MTJkMmE5MTkwMTZlZDc1YzJkY2Fi
MWM5MTQ0Y2NhNmQ1M2Q1OGIuLmM0YzYwNTQwYWI5YjY4YTY5M2NkYjZmYzFlNzdmZjA5NGM0MzQx
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCkBAIC00MTQsOCArNDE0LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9N
V2luZG93KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIERPTVdpbmQKICAgICBWOERP
TVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNXaW5kb3csICZWOERPTVdpbmRvdzo6aW5mbywgd2lu
ZG93KTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChqc1dpbmRvdy0+R2V0UHJvdG90eXBlKCkpLCAmVjhET01XaW5kb3c6OmluZm8s
IHdpbmRvdyk7CiAKLSAgICB3aW5kb3ctPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KHdpbmRvdywgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhqc1dpbmRvdykpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0
KFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Pjo6TmV3KGpzV2luZG93KSk7CiAKICAgICAvLyBJbnNlcnQgdGhlIHdpbmRvdyBpbnN0YW5jZSBh
cyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdjhSZWFsR2xvYmFsID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb250
ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMzBlNzMwNjEzMzU2ZWQ1NjMzZGQ5ZjNkZjllZTU3
MDU1YTNlMjI1YS4uMTcxNDA2MmYxOWMzOThmYWYxZTE3NWY1YmE4OGU2NWEzNWE4MThmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02NiwzMCAr
NjYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGUgY2FsbGVyIG11c3QgaGF2
ZSBpbmNyZWFzZWQgb2JqJ3MgcmVmIGNvdW50Lgotdm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdCh2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIpCit2b2lkIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShQYXNz
UmVmUHRyPE5vZGU+IG5vZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiB7
Ci0gICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKHdyYXBwZXIpKTsKLSAg
ICBBU1NFUlQoIWRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpLT50b0FjdGl2ZURPTU9iamVjdEZ1bmN0
aW9uKTsKLSAgICBnZXRET01PYmplY3RNYXAoKS5zZXQob2JqZWN0LCB3cmFwcGVyKTsKLX0KLQot
Ly8gVGhlIGNhbGxlciBtdXN0IGhhdmUgaW5jcmVhc2VkIG9iaidzIHJlZiBjb3VudC4KLXZvaWQg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qodm9pZCogb2JqZWN0
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotewotICAgIEFTU0VSVChWOERP
TVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7Ci0gICAgQVNTRVJUKGRvbVdyYXBw
ZXJUeXBlKHdyYXBwZXIpLT50b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKTsKLSAgICBnZXRBY3Rp
dmVET01PYmplY3RNYXAoKS5zZXQob2JqZWN0LCB3cmFwcGVyKTsKLX0KLQotLy8gVGhlIGNhbGxl
ciBtdXN0IGhhdmUgaW5jcmVhc2VkIG5vZGUncyByZWYgY291bnQuCi12b2lkIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShOb2RlKiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyKQotewotICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3Jh
cHBlcih3cmFwcGVyKSk7CisgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7CiAg
ICAgaWYgKG5vZGUtPmlzQWN0aXZlTm9kZSgpKQotICAgICAgICBnZXRBY3RpdmVET01Ob2RlTWFw
KCkuc2V0KG5vZGUsIHdyYXBwZXIpOworICAgICAgICBnZXRBY3RpdmVET01Ob2RlTWFwKCkuc2V0
KG5vZGUubGVha1JlZigpLCB3cmFwcGVyKTsKICAgICBlbHNlCi0gICAgICAgIGdldERPTU5vZGVN
YXAoKS5zZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgIGdldERPTU5vZGVNYXAoKS5zZXQobm9k
ZS5sZWFrUmVmKCksIHdyYXBwZXIpOwogfQogCiB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOERP
TVdyYXBwZXI6OmdldENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG9iamVjdFByb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmgKaW5kZXggMGU4MGIyMjk2OTVmOWQ5YzhmYzllMzJkMmZlZWE4ZDJiMzQ1
YWYzMi4uYTk0YjRiZDIzMjY4M2Y3NGYwNmY5MGViM2QwNDE4NzE5NzMzZTdlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJWOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5oIgorI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAj
aW5jbHVkZSAiVjhFdmVudC5oIgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5j
bHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJYUGF0aE5T
UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMDUsMTAgKzEwNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4
OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGdldENvbnN0cnVjdG9yKFdyYXBwZXJUeXBlSW5mbyosIFdv
cmtlckNvbnRleHQqKTsKICNlbmRpZgogCi0gICAgICAgIC8vIFNldCBKUyB3cmFwcGVyIG9mIGEg
RE9NIG9iamVjdCwgdGhlIGNhbGxlciBpbiBjaGFyZ2Ugb2YgaW5jcmVhc2UgcmVmLgotICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qodm9pZCosIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+KTsKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0SlNXcmFwcGVyRm9yQWN0
aXZlRE9NT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckRPTU5vZGUoTm9kZSosIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQg
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8VD4sIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2V0
SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KFBhc3NSZWZQdHI8VD4sIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+KTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0SlNXcmFwcGVyRm9yRE9NTm9k
ZShQYXNzUmVmUHRyPE5vZGU+LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZERPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwog
CkBAIC0xNDgsNiArMTQ5LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAg
IH07CiAKLX0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxUPiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgeworICAgICAgICBBU1NFUlQobWF5YmVE
T01XcmFwcGVyKHdyYXBwZXIpKTsKKyAgICAgICAgQVNTRVJUKCFkb21XcmFwcGVyVHlwZSh3cmFw
cGVyKS0+dG9BY3RpdmVET01PYmplY3RGdW5jdGlvbik7CisgICAgICAgIGdldERPTU9iamVjdE1h
cCgpLnNldChvYmplY3QubGVha1JlZigpLCB3cmFwcGVyKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3Rp
dmVET01PYmplY3QoUGFzc1JlZlB0cjxUPiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIpCisgICAgeworICAgICAgICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdyYXBw
ZXIpKTsKKyAgICAgICAgQVNTRVJUKGRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpLT50b0FjdGl2ZURP
TU9iamVjdEZ1bmN0aW9uKTsKKyAgICAgICAgZ2V0QWN0aXZlRE9NT2JqZWN0TWFwKCkuc2V0KG9i
amVjdC5sZWFrUmVmKCksIHdyYXBwZXIpOworICAgIH0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFY4RE9NV3JhcHBlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmgKaW5kZXggZmU0OTU2M2NhNTIyMzQ1ODkwNTMzMzlmMDg4NDExYWNjNTJhZDJkNS4uNWI3Y2Nl
NGY0ZDcxODU2ZTQzNjQ2NDI0N2E5MmJmNWI5OWQ1N2QzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaApAQCAtMzUxLDExICszNTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRv
VjgoUGFzc1JlZlB0cjxUPiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob2xkZXIsIElu
ZGVwZW5kZW50TW9kZSBpbmRlcGVuZGVudCA9IERvTm90TWFya0luZGVwZW5kZW50KQogICAgIHsK
LSAgICAgICAgb2JqZWN0LT5yZWYoKTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gaGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhob2xkZXIpOwogICAg
ICAgICBpZiAoaW5kZXBlbmRlbnQgPT0gTWFya0luZGVwZW5kZW50KQogICAgICAgICAgICAgaGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOwotICAgICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdChvYmplY3QuZ2V0KCksIGhhbmRsZSk7CisgICAgICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG9iamVjdCwgaGFuZGxlKTsKICAgICAgICAgcmV0
dXJuIGhvbGRlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDUxYmU1Y2E4M2Y3
MDc5Yzc0YTI0N2QzMjUzZjA1NTc3YzhjYzg0MTcuLmJmOGQyYjMzOWNjMTVkMTYzODRlMDVhNTc5
NzU3NjA4YTZlNjNhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTY4LDggKzE2OCw3IEBA
IGJvb2wgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKCkK
ICAgICAvLyBXcmFwIHRoZSBvYmplY3QuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KGpzV29ya2VyQ29udGV4dCwgY29udGV4dFR5cGUsIG1fd29ya2VyQ29udGV4dCk7CiAKLSAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChtX3dvcmtlckNvbnRleHQsIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoanNXb3JrZXJDb250ZXh0KSk7Ci0gICAgbV93
b3JrZXJDb250ZXh0LT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU9iamVjdChQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoanNXb3JrZXJDb250ZXh0KSk7CiAKICAgICAvLyBJ
bnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzaGFkb3cg
b2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCA2N2I5ZDFhNTI0
M2NiMmUxOTc2MjQ5NTk1MzRiODRlNWU1OGE4MzNiLi4xYzJmZTY2ZDFkOWQ2YmJhNDc4ZDQ5YTUy
MmU1OTllMDYxMzVmMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg2LDggKzg2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmcKIAogICAgIFJlZlB0cjxI
VE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29u
c3RydWN0b3IoZG9jdW1lbnQsIG9wdGlvbmFsV2lkdGgsIG9wdGlvbmFsSGVpZ2h0KTsKICAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJlY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yOjppbmZvLCBpbWFnZS5nZXQoKSk7Ci0gICAgaW1hZ2UtPnJlZigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbWFnZS5nZXQoKSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltYWdlLnJlbGVhc2UoKSwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CiAgICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5k
ZXggZjcxODliNzkzMzM1NmQwZjJjNzBhNGMwMDU2ZmQ3M2FhYzFkZmZlYi4uNTNmMzQ0MjFkN2I0
NWEzZjg5NDRjNjY5ZDdhMTlkYjA1ZGFhNmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAKQEAgLTc1LDggKzc1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXIK
ICAgICBSZWZQdHI8V2ViS2l0TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKTsKIAogICAgIFY4RE9NV3Jh
cHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgb2JzZXJ2ZXIuZ2V0KCkp
OwotICAgIG9ic2VydmVyLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckRPTU9iamVjdChvYnNlcnZlci5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhhcmdzLkhvbGRlcigpKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3Qob2JzZXJ2ZXIucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3
KGFyZ3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3Rv
bS5jcHAKaW5kZXggOWI1ZTEwYjY2YWQyODk1NWNlZGVmZTRkZmQ2ZDA5ZTM5ODk5OGZhNi4uNGRl
NjQ3ZTY2N2NmMDYxY2IxMDk1OWY3MGYzZmQwYjgwZmQwYmQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBA
IC0xMTEsOCArMTExLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHdlYlNvY2tldC5nZXQoKSk7
CiAKICAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4KLSAgICB3ZWJTb2NrZXQt
PnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0
KHdlYlNvY2tldC5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhv
bGRlcigpKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmpl
Y3Qod2ViU29ja2V0LnJlbGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhh
cmdzLkhvbGRlcigpKSk7CiAKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWE1YjBjNjVjZDMzYjJmMTBmMTJlNTEzNTJh
MGVlZWNiMzhkMTgyOC4uYTc3NmQ5NjgxMzdlMGFkY2E5MTUzMTAyZTVkZmE0NDkwYTgwZmU1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTY2LDggKzY2LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJn
cy5Ib2xkZXIoKSwgJmluZm8sIHhtbEh0dHBSZXF1ZXN0LmdldCgpKTsKIAogICAgIC8vIEFkZCBv
YmplY3QgdG8gdGhlIHdyYXBwZXIgbWFwLgotICAgIHhtbEh0dHBSZXF1ZXN0LT5yZWYoKTsKLSAg
ICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh4bWxIdHRwUmVx
dWVzdC5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigp
KSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoeG1s
SHR0cFJlcXVlc3QucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133895</attachid>
            <date>2012-03-26 14:45:40 -0700</date>
            <delta_ts>2012-04-04 16:16:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82238-20120326144539.patch</filename>
            <type>text/plain</type>
            <size>14672</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcyMDE0OTVmMjU4ZWYw
YWU1ZTUyNDk3MDU2NmY5M2ZhMjhlZTQzMS4uYmJiNjk1YWJiMmI4NDE1ODc2ZTA5Y2ViOTMzNGJl
N2VmYzUwMTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAzLTI2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBQYXNzUmVmUHRyIGlu
IFY4RE9NV3JhcHBlciBpbnRlcmZhY2UgdG8gYXZvaWQgZXhwbGljaXQgcmVmKCkgY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUaGUgc2V0SlNXcmFwcGVy
KiBtZXRob2RzIHByZXZpb3VzbHkgZmVhdHVyZWQgYSBjb21tZW50IHRoYXQgYXNrZWQKKyAgICAg
ICAgY2FsbGVycyB0byByZWYgdGhlIG9iamVjdHMgYmVmb3JlIHBhc3NpbmcgdGhlbSBpbi4gVGhp
cyBjaGFuZ2UgbWFrZXMKKyAgICAgICAgdGhhdCBjb250cmFjdCBleHBsaWNpdCAoYW5kIGFsbG93
cyB0aGUgcmVtb3ZhbCBvZiB0aGUgY29tbWVudCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIGZv
ciBDb25zdHJ1Y3RvckNhbGxiYWNrcywgdGhpcyBjaGFuZ2Ugc2xpZ2h0bHkgcmVkdWNlcworICAg
ICAgICByZWZjb3VudCBjaHVybiBieSBwYXNzaW5nIG9uIHRoZSBpbml0aWFsIHJlZiB2aWEgUmVm
UHRyOjpyZWxlYXNlKCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjayk6IFVzZSBSZWZQdHI6OnJlbGVh
c2UoKSB0byBhdm9pZCByZWZjb3VudCBjaHVybiBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZigpIGNh
bGwuCisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6IGRpdHRvLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdyk6IENhc3QgdG8gYSBQYXNz
UmVmUHRyIGFuZCByZW1vdmUgZXhwbGljaXQgcmVmIGNhbGwuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yRE9NTm9kZSk6IFBhc3MgbGVha2VkIHJlZnMgaW50byB0aGUgRE9NTm9kZU1h
cHMuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChWOERP
TVdyYXBwZXIpOiBNYWtlIHRoZSBzZXRKU1dyYXBwZXJGb3IqIG1ldGhvZHMgdGFrZSBQYXNzUmVm
UHRyPFQ+LgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3QpOiBQYXNzIGxlYWtlZCByZWYgaW50byB0aGUgRE9NT2JqZWN0TWFwLgorICAgICAg
ICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qp
OiBQYXNzIGxlYWtlZCByZWYgaW50byB0aGUgQWN0aXZlRE9NT2JqZWN0TWFwLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOiBSZW1vdmUg
ZXhwbGljaXQgcmVmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHk6OmluaXRDb250ZXh0SWZOZWVkZWQpOiBDYXN0IHRvIGEgUGFzc1JlZlBUciBhbmQgcmVtb3Zl
IGV4cGxpY2l0IHJlZiBjYWxsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKTogVXNlIFJlZlB0cjo6cmVsZWFzZSgpIHRvIGF2
b2lkIHJlZmNvdW50IGNodXJuIGFuZCByZW1vdmUgZXhwbGljaXQgcmVmLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKTogZGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrKTogZGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0dG8uCisKIDIwMTItMDMtMjYgIFN0ZXBoZW4gQ2hlbm5l
eSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGYWlsdXJlIHRvIGludmFsaWRh
dGUgdGV4dCBwb3NpdGlvbiBhdHRyaWJ1dGVzIHdoZW4gRE9NIGNoYW5nZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzRl
ZGQ5MDY2MDMyNDIzZWIwZDBlZTUyYzEyZTJiYjExZTIxMTBkZC4uY2I0ZTM0MjRlMjNlYjVjYmJh
ZTRmNTE5ODc0ODEzNjlmYmU3YTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE3NjIsOCArMTc2Miw3IEBAIEVORAog
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERP
TVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOwotICAgIGltcGwtPnJlZigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwuZ2V0KCks
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOworICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwucmVsZWFzZSgpLCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsKICAgICByZXR1cm4gYXJncy5Ib2xk
ZXIoKTsKIEVORAogCkBAIC0xOTQ0LDggKzE5NDMsNyBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIs
ICZWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgaW1wbC5nZXQoKSk7Ci0gICAg
aW1wbC0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVj
dH0oaW1wbC5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7
CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxl
YXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwogICAgIHJl
dHVybiBhcmdzLkhvbGRlcigpOwogRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggZDUxMmQyYTkxOTAxNmVkNzVjMmRjYWIxYzkx
NDRjY2E2ZDUzZDU4Yi4uYzRjNjA1NDBhYjliNjhhNjkzY2RiNmZjMWU3N2ZmMDk0YzQzNDFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
QEAgLTQxNCw4ICs0MTQsNyBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5k
b3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwgRE9NV2luZAogICAgIFY4RE9NV3Jh
cHBlcjo6c2V0RE9NV3JhcHBlcihqc1dpbmRvdywgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cp
OwogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGpzV2luZG93LT5HZXRQcm90b3R5cGUoKSksICZWOERPTVdpbmRvdzo6aW5mbywgd2lu
ZG93KTsKIAotICAgIHdpbmRvdy0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBw
ZXJGb3JET01PYmplY3Qod2luZG93LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpz
V2luZG93KSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFz
c1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcoanNXaW5kb3cpKTsKIAogICAgIC8vIEluc2VydCB0aGUgd2luZG93IGluc3RhbmNlIGFzIHRo
ZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB2OFJlYWxHbG9iYWwgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRleHQt
Pkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAppbmRleCAzMGU3MzA2MTMzNTZlZDU2MzNkZDlmM2RmOWVlNTcwNTVh
M2UyMjVhLi4xNzE0MDYyZjE5YzM5OGZhZjFlMTc1ZjViYTg4ZTY1YTM1YTgxOGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTY2LDMwICs2Niwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZSBjYWxsZXIgbXVzdCBoYXZlIGlu
Y3JlYXNlZCBvYmoncyByZWYgY291bnQuCi12b2lkIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlcikKK3ZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKIHsKLSAg
ICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgIEFT
U0VSVCghZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24p
OwotICAgIGdldERPTU9iamVjdE1hcCgpLnNldChvYmplY3QsIHdyYXBwZXIpOwotfQotCi0vLyBU
aGUgY2FsbGVyIG11c3QgaGF2ZSBpbmNyZWFzZWQgb2JqJ3MgcmVmIGNvdW50Lgotdm9pZCBWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh2b2lkKiBvYmplY3QsIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCi17Ci0gICAgQVNTRVJUKFY4RE9NV3Jh
cHBlcjo6bWF5YmVET01XcmFwcGVyKHdyYXBwZXIpKTsKLSAgICBBU1NFUlQoZG9tV3JhcHBlclR5
cGUod3JhcHBlciktPnRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24pOwotICAgIGdldEFjdGl2ZURP
TU9iamVjdE1hcCgpLnNldChvYmplY3QsIHdyYXBwZXIpOwotfQotCi0vLyBUaGUgY2FsbGVyIG11
c3QgaGF2ZSBpbmNyZWFzZWQgbm9kZSdzIHJlZiBjb3VudC4KLXZvaWQgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JET01Ob2RlKE5vZGUqIG5vZGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIpCi17Ci0gICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVy
KHdyYXBwZXIpKTsKKyAgICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdyYXBwZXIpKTsKICAgICBp
ZiAobm9kZS0+aXNBY3RpdmVOb2RlKCkpCi0gICAgICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoKS5z
ZXQobm9kZSwgd3JhcHBlcik7CisgICAgICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoKS5zZXQobm9k
ZS5sZWFrUmVmKCksIHdyYXBwZXIpOwogICAgIGVsc2UKLSAgICAgICAgZ2V0RE9NTm9kZU1hcCgp
LnNldChub2RlLCB3cmFwcGVyKTsKKyAgICAgICAgZ2V0RE9NTm9kZU1hcCgpLnNldChub2RlLmxl
YWtSZWYoKSwgd3JhcHBlcik7CiB9CiAKIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4RE9NV3Jh
cHBlcjo6Z2V0Q29uc3RydWN0b3IoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gb2JqZWN0UHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaAppbmRleCAwZTgwYjIyOTY5NWY5ZDljOGZjOWUzMmQyZmVlYThkMmIzNDVhZjMy
Li5hOTRiNGJkMjMyNjgzZjc0ZjA2ZjkwZWIzZDA0MTg3MTk3MzNlN2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCisjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNs
dWRlICJWOEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRl
ICJWOFV0aWxpdGllcy5oIgpAQCAtNDYsNiArNDcsNyBAQAogI2luY2x1ZGUgIlhQYXRoTlNSZXNv
bHZlci5oIgogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEw
NSwxMCArMTA3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj4gZ2V0Q29uc3RydWN0b3IoV3JhcHBlclR5cGVJbmZvKiwgV29ya2Vy
Q29udGV4dCopOwogI2VuZGlmCiAKLSAgICAgICAgLy8gU2V0IEpTIHdyYXBwZXIgb2YgYSBET00g
b2JqZWN0LCB0aGUgY2FsbGVyIGluIGNoYXJnZSBvZiBpbmNyZWFzZSByZWYuCi0gICAgICAgIHN0
YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckRPTU9iamVjdCh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4pOwotICAgICAgICBzdGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JBY3RpdmVE
T01PYmplY3Qodm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgc2V0SlNXcmFwcGVyRm9yRE9NTm9kZShOb2RlKiwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4pOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRK
U1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxUPiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4pOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRKU1dy
YXBwZXJGb3JBY3RpdmVET01PYmplY3QoUGFzc1JlZlB0cjxUPiwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4pOworICAgICAgICBzdGF0aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBh
c3NSZWZQdHI8Tm9kZT4sIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRE9NT2JqZWN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAKQEAg
LTE0OCw2ICsxNDksMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgfTsK
IAotfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU9iamVjdChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdy
YXBwZXIod3JhcHBlcikpOworICAgICAgICBBU1NFUlQoIWRvbVdyYXBwZXJUeXBlKHdyYXBwZXIp
LT50b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uKTsKKyAgICAgICAgZ2V0RE9NT2JqZWN0TWFwKCku
c2V0KG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURP
TU9iamVjdChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikp
OworICAgICAgICBBU1NFUlQoZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnRvQWN0aXZlRE9NT2Jq
ZWN0RnVuY3Rpb24pOworICAgICAgICBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5zZXQob2JqZWN0
LmxlYWtSZWYoKSwgd3JhcHBlcik7CisgICAgfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVjhET01XcmFwcGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApp
bmRleCBmZTQ5NTYzY2E1MjIzNDU4OTA1MzMzOWYwODg0MTFhY2M1MmFkMmQ1Li41YjdjY2U0ZjRk
NzE4NTZlNDM2NDY0MjQ3YTkyYmY1Yjk5ZDU3ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCkBAIC0zNTEsMTEgKzM1MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOChQ
YXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvbGRlciwgSW5kZXBl
bmRlbnRNb2RlIGluZGVwZW5kZW50ID0gRG9Ob3RNYXJrSW5kZXBlbmRlbnQpCiAgICAgewotICAg
ICAgICBvYmplY3QtPnJlZigpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBo
YW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGhvbGRlcik7CiAgICAgICAg
IGlmIChpbmRlcGVuZGVudCA9PSBNYXJrSW5kZXBlbmRlbnQpCiAgICAgICAgICAgICBoYW5kbGUu
TWFya0luZGVwZW5kZW50KCk7Ci0gICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NT2JqZWN0KG9iamVjdC5nZXQoKSwgaGFuZGxlKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JET01PYmplY3Qob2JqZWN0LCBoYW5kbGUpOwogICAgICAgICByZXR1cm4g
aG9sZGVyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNTFiZTVjYTgzZjcwNzlj
NzRhMjQ3ZDMyNTNmMDU1NzdjOGNjODQxNy4uYmY4ZDJiMzM5Y2MxNWQxNjM4NGUwNWE1Nzk3NTc2
MDhhNmU2M2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0xNjgsOCArMTY4LDcgQEAgYm9v
bCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogICAg
IC8vIFdyYXAgdGhlIG9iamVjdC4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNX
b3JrZXJDb250ZXh0LCBjb250ZXh0VHlwZSwgbV93b3JrZXJDb250ZXh0KTsKIAotICAgIFY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG1fd29ya2VyQ29udGV4dCwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhqc1dvcmtlckNvbnRleHQpKTsKLSAgICBtX3dvcmtl
ckNvbnRleHQtPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2Jq
ZWN0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0KSwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhqc1dvcmtlckNvbnRleHQpKTsKIAogICAgIC8vIEluc2Vy
dCB0aGUgb2JqZWN0IGluc3RhbmNlIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmpl
Y3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDY3YjlkMWE1MjQzY2Iy
ZTE5NzYyNDk1OTUzNGI4NGU1ZTU4YTgzM2IuLjFjMmZlNjZkMWQ5ZDZiYmE0NzhkNDlhNTIyZTU5
OWUwNjEzNWYxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAt
ODYsOCArODYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZwogCiAgICAgUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1
Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3I6OmluZm8sIGltYWdlLmdldCgpKTsKLSAgICBpbWFnZS0+cmVmKCk7Ci0gICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltYWdlLmdldCgpLCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdyYXBw
ZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoaW1hZ2UucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xk
ZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCBm
NzE4OWI3OTMzMzU2ZDBmMmM3MGE0YzAwNTZmZDczYWFjMWRmZmViLi41M2YzNDQyMWQ3YjQ1YTNm
ODk0NGM2NjlkN2ExOWRiMDVkYWE2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVy
Q3VzdG9tLmNwcApAQCAtNzUsOCArNzUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJL
aXRNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAg
IFJlZlB0cjxXZWJLaXRNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYnNlcnZlci5nZXQoKSk7Ci0g
ICAgb2JzZXJ2ZXItPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9N
T2JqZWN0KG9ic2VydmVyLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVj
dChvYnNlcnZlci5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJn
cy5Ib2xkZXIoKSkpOwogICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cAppbmRleCA5YjVlMTBiNjZhZDI4OTU1Y2VkZWZlNGRmZDZkMDllMzk4OTk4ZmE2Li41YzE2NjFl
OTIxNDI2MTRhMzA4ZTEyYzZlMDI4MTViY2JhMzI0MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEw
NywxMyArMTA3LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIAotICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3
cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVsZHMuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01X
cmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCB3ZWJTb2NrZXQuZ2V0KCkpOwotCi0gICAgLy8g
QWRkIG9iamVjdCB0byB0aGUgd3JhcHBlciBtYXAuCi0gICAgd2ViU29ja2V0LT5yZWYoKTsKLSAg
ICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh3ZWJTb2NrZXQu
Z2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwot
CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qod2ViU29j
a2V0LnJlbGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRl
cigpKSk7CiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggNWE1YjBjNjVjZDMzYjJmMTBmMTJlNTEzNTJhMGVlZWNiMzhk
MTgyOC4uNzFkN2RkMjg2NTUyYzRiZTk1OTIzM2MzMWQxMjc4ZTE3MGJlMjMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTY0LDEwICs2NCw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAgICAgICAgIHNlY3VyaXR5T3JpZ2luID0gaXNvbGF0ZWRDb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpOwogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVl
c3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKICAg
ICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHhtbEh0
dHBSZXF1ZXN0LmdldCgpKTsKLQotICAgIC8vIEFkZCBvYmplY3QgdG8gdGhlIHdyYXBwZXIgbWFw
LgotICAgIHhtbEh0dHBSZXF1ZXN0LT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckFjdGl2ZURPTU9iamVjdCh4bWxIdHRwUmVxdWVzdC5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoeG1sSHR0cFJlcXVlc3QucmVsZWFzZSgpLCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKICAgICByZXR1
cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135708</attachid>
            <date>2012-04-04 16:16:36 -0700</date>
            <delta_ts>2012-04-04 17:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82238-20120404161635.patch</filename>
            <type>text/plain</type>
            <size>14899</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MjhlYzBjM2E1NWRk
ZDk1MWI4YTVlMDA2M2Q2NWI5OTY1NGYyNy4uM2RjNjM3ZDdmNjI3ZWUzNDFjODJlZTljNmU3Y2Uy
MWFkOTcyMWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEyLTA0LTA0ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFVzZSBQYXNzUmVmUHRyIGlu
IFY4RE9NV3JhcHBlciBpbnRlcmZhY2UgdG8gYXZvaWQgZXhwbGljaXQgcmVmKCkgY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIHIx
MTIxNjMgd2l0aG91dCBtb2RpZmljYXRpb24sIGFzIGl0IHN0aWxsIHNlZW1zIHZhbGlkLgorICAg
ICAgICBXaWxsIHdhdGNoIENocm9tZSBDYW5hcmllcyBjbG9zZWx5IGZvciBhbnkgbWVtb3J5IGlz
c3Vlcy4KKworICAgICAgICBUaGUgc2V0SlNXcmFwcGVyKiBtZXRob2RzIHByZXZpb3VzbHkgZmVh
dHVyZWQgYSBjb21tZW50IHRoYXQgYXNrZWQKKyAgICAgICAgY2FsbGVycyB0byByZWYgdGhlIG9i
amVjdHMgYmVmb3JlIHBhc3NpbmcgdGhlbSBpbi4gVGhpcyBjaGFuZ2UgbWFrZXMKKyAgICAgICAg
dGhhdCBjb250cmFjdCBleHBsaWNpdCAoYW5kIGFsbG93cyB0aGUgcmVtb3ZhbCBvZiB0aGUgY29t
bWVudCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIGZvciBDb25zdHJ1Y3RvckNhbGxiYWNrcywg
dGhpcyBjaGFuZ2Ugc2xpZ2h0bHkgcmVkdWNlcworICAgICAgICByZWZjb3VudCBjaHVybiBieSBw
YXNzaW5nIG9uIHRoZSBpbml0aWFsIHJlZiB2aWEgUmVmUHRyOjpyZWxlYXNlKCkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JDYWxsYmFjayk6IFVzZSBSZWZQdHI6OnJlbGVhc2UoKSB0byBhdm9pZCByZWZjb3VudCBj
aHVybiBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZigpIGNhbGwuCisgICAgICAgIChHZW5lcmF0ZU5h
bWVkQ29uc3RydWN0b3JDYWxsYmFjayk6IGRpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6
aW5zdGFsbERPTVdpbmRvdyk6IENhc3QgdG8gYSBQYXNzUmVmUHRyIGFuZCByZW1vdmUgZXhwbGlj
aXQgcmVmIGNhbGwuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZSk6IFBh
c3MgbGVha2VkIHJlZnMgaW50byB0aGUgRE9NTm9kZU1hcHMuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChWOERPTVdyYXBwZXIpOiBNYWtlIHRoZSBzZXRK
U1dyYXBwZXJGb3IqIG1ldGhvZHMgdGFrZSBQYXNzUmVmUHRyPFQ+LgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QpOiBQYXNzIGxlYWtlZCBy
ZWYgaW50byB0aGUgRE9NT2JqZWN0TWFwLgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QpOiBQYXNzIGxlYWtlZCByZWYgaW50byB0
aGUgQWN0aXZlRE9NT2JqZWN0TWFwLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOiBSZW1vdmUgZXhwbGljaXQgcmVmLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQp
OiBDYXN0IHRvIGEgUGFzc1JlZlBUciBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZiBjYWxsLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxi
YWNrKTogVXNlIFJlZlB0cjo6cmVsZWFzZSgpIHRvIGF2b2lkIHJlZmNvdW50IGNodXJuIGFuZCBy
ZW1vdmUgZXhwbGljaXQgcmVmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJLaXRN
dXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0
dG8uCisKKzIwMTItMDQtMDQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogYnJlYWsgb24gRE9NIG5vZGUgaW5zZXJ0aW9uIG9ubHkgb25j
ZSBwZXIgb3BlcmF0aW9uLCBub3Qgb25jZSBwZXIgaW5zZXJ0ZWQgbm9kZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NjcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzNWM4
MzAzMGFlNDMzYmIxOGYyZmRhYjY1ZGI3MzFhMDliMTcwMWE4Li5mYTE3ZWEzYWI1Njg4OWEyZGM0
MDMyOTY2NzM5MTk1YzlkNDhhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTc2Miw4ICsxNzYyLDcgQEAgRU5ECiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9N
V3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0g
ICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5nZXQoKSwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CisgICAgVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxlYXNlKCksIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogRU5ECiAKQEAgLTE5NDQsOCArMTk0Myw3IEBAIEVORAogICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwg
JlY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCBpbXBsLmdldCgpKTsKLSAgICBp
bXBsLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0
fShpbXBsLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsK
KyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLnJlbGVh
c2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CiAgICAgcmV0
dXJuIGFyZ3MuSG9sZGVyKCk7CiBFTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA5YjU2MTFiZmI5NDQzZjMxNDM4ZmM2MmViYTg5
YWEyNmRjM2NhMjk0Li5iN2UzYWQ0OWM1ZGViMGQzYjQ2ODllOWFjZDRhNjNlNDI4NGE5YTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApA
QCAtNDE1LDggKzQxNSw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRv
dyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kCiAgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGpzV2luZG93LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7
CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoanNXaW5kb3ctPkdldFByb3RvdHlwZSgpKSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5k
b3cpOwogCi0gICAgd2luZG93LT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdCh3aW5kb3csIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoanNX
aW5kb3cpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChQYXNz
UmVmUHRyPERPTVdpbmRvdz4od2luZG93KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhqc1dpbmRvdykpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSB3aW5kb3cgaW5zdGFuY2UgYXMgdGhl
IHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHY4UmVhbEdsb2JhbCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29udGV4dC0+
R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCmluZGV4IDhjZTY0ZGJkN2Y3ZWEzY2YwMGNiZjRiOGQ0ZjBiZWQyNWQ1
MTI2YmEuLjA2MmQzZjIzNTgwODM1Yjg4NzkyMDlmMjQ0MzJmZDcyNjYxYWQxYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjgsMzAgKzY4LDEz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGhlIGNhbGxlciBtdXN0IGhhdmUgaW5j
cmVhc2VkIG9iaidzIHJlZiBjb3VudC4KLXZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01PYmplY3Qodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyKQordm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1JlZlB0
cjxOb2RlPiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogewotICAg
IEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7Ci0gICAgQVNT
RVJUKCFkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dG9BY3RpdmVET01PYmplY3RGdW5jdGlvbik7
Ci0gICAgZ2V0RE9NT2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlcik7Ci19Ci0KLS8vIFRo
ZSBjYWxsZXIgbXVzdCBoYXZlIGluY3JlYXNlZCBvYmoncyByZWYgY291bnQuCi12b2lkIFY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHZvaWQqIG9iamVjdCwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhET01XcmFw
cGVyOjptYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgIEFTU0VSVChkb21XcmFwcGVyVHlw
ZSh3cmFwcGVyKS0+dG9BY3RpdmVET01PYmplY3RGdW5jdGlvbik7Ci0gICAgZ2V0QWN0aXZlRE9N
T2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlcik7Ci19Ci0KLS8vIFRoZSBjYWxsZXIgbXVz
dCBoYXZlIGluY3JlYXNlZCBub2RlJ3MgcmVmIGNvdW50Lgotdm9pZCBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU5vZGUoTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIo
d3JhcHBlcikpOworICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwogICAgIGlm
IChub2RlLT5pc0FjdGl2ZU5vZGUoKSkKLSAgICAgICAgZ2V0QWN0aXZlRE9NTm9kZU1hcCgpLnNl
dChub2RlLCB3cmFwcGVyKTsKKyAgICAgICAgZ2V0QWN0aXZlRE9NTm9kZU1hcCgpLnNldChub2Rl
LmxlYWtSZWYoKSwgd3JhcHBlcik7CiAgICAgZWxzZQotICAgICAgICBnZXRET01Ob2RlTWFwKCku
c2V0KG5vZGUsIHdyYXBwZXIpOworICAgICAgICBnZXRET01Ob2RlTWFwKCkuc2V0KG5vZGUubGVh
a1JlZigpLCB3cmFwcGVyKTsKIH0KIAogdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhET01XcmFw
cGVyOjpnZXRDb25zdHJ1Y3RvcihXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvYmplY3RQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5oCmluZGV4IDBlODBiMjI5Njk1ZjlkOWM4ZmM5ZTMyZDJmZWVhOGQyYjM0NWFmMzIu
LmE5NGI0YmQyMzI2ODNmNzRmMDZmOTBlYjNkMDQxODcxOTczM2U3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiTm9kZUZpbHRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
VjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1
ZGUgIlY4RXZlbnQuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29s
dmVyLmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1
LDEwICsxMDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6TG9j
YWw8djg6OkZ1bmN0aW9uPiBnZXRDb25zdHJ1Y3RvcihXcmFwcGVyVHlwZUluZm8qLCBXb3JrZXJD
b250ZXh0Kik7CiAjZW5kaWYKIAotICAgICAgICAvLyBTZXQgSlMgd3JhcHBlciBvZiBhIERPTSBv
YmplY3QsIHRoZSBjYWxsZXIgaW4gY2hhcmdlIG9mIGluY3JlYXNlIHJlZi4KLSAgICAgICAgc3Rh
dGljIHZvaWQgc2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckFjdGl2ZURP
TU9iamVjdCh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRKU1dyYXBwZXJGb3JET01Ob2RlKE5vZGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Pik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldEpT
V3JhcHBlckZvckRPTU9iamVjdChQYXNzUmVmUHRyPFQ+LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldEpTV3Jh
cHBlckZvckFjdGl2ZURPTU9iamVjdChQYXNzUmVmUHRyPFQ+LCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Pik7CisgICAgICAgIHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFz
c1JlZlB0cjxOb2RlPiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogCiAgICAgICAgIHN0
YXRpYyBib29sIGlzVmFsaWRET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIApAQCAt
MTQ4LDYgKzE0OSwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KICAgICB9Owog
Ci19CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8VD4gb2JqZWN0LCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1heWJlRE9NV3Jh
cHBlcih3cmFwcGVyKSk7CisgICAgICAgIEFTU0VSVCghZG9tV3JhcHBlclR5cGUod3JhcHBlcikt
PnRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24pOworICAgICAgICBnZXRET01PYmplY3RNYXAoKS5z
ZXQob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9N
T2JqZWN0KFBhc3NSZWZQdHI8VD4gb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7
CisgICAgICAgIEFTU0VSVChkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dG9BY3RpdmVET01PYmpl
Y3RGdW5jdGlvbik7CisgICAgICAgIGdldEFjdGl2ZURPTU9iamVjdE1hcCgpLnNldChvYmplY3Qu
bGVha1JlZigpLCB3cmFwcGVyKTsKKyAgICB9Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBWOERPTVdyYXBwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmlu
ZGV4IDhiMjY5ZTQxZmZmZTBkYTcxNTJjZDA5MmZmNThjOTk5NmQ0MmM1N2UuLmNkMDUxMGEzYzFk
ZjJjNzMwNTZjOWQwNTFlOTBmZmQ0MmJjNjA5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmgKQEAgLTM1MiwxMSArMzUyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4KFBh
c3NSZWZQdHI8VD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9sZGVyLCBJbmRlcGVu
ZGVudE1vZGUgaW5kZXBlbmRlbnQgPSBEb05vdE1hcmtJbmRlcGVuZGVudCkKICAgICB7Ci0gICAg
ICAgIG9iamVjdC0+cmVmKCk7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGhh
bmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaG9sZGVyKTsKICAgICAgICAg
aWYgKGluZGVwZW5kZW50ID09IE1hcmtJbmRlcGVuZGVudCkKICAgICAgICAgICAgIGhhbmRsZS5N
YXJrSW5kZXBlbmRlbnQoKTsKLSAgICAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3Qob2JqZWN0LmdldCgpLCBoYW5kbGUpOworICAgICAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckRPTU9iamVjdChvYmplY3QsIGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBo
b2xkZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCAxNjJkNzk0Mjg1ZmJiYTNl
ODI1NzgwN2EzYTM1NTFlOGU4MTIyNThjLi5mODJiZGQwN2Y5ZWMxMGZhM2NhYzJiMjk2ZTJkODM1
MjkxZjhkZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTE2OSw4ICsxNjksNyBAQCBib29s
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAgICAg
Ly8gV3JhcCB0aGUgb2JqZWN0LgogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihqc1dv
cmtlckNvbnRleHQsIGNvbnRleHRUeXBlLCBtX3dvcmtlckNvbnRleHQpOwogCi0gICAgVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QobV93b3JrZXJDb250ZXh0LCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpzV29ya2VyQ29udGV4dCkpOwotICAgIG1fd29ya2Vy
Q29udGV4dC0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmpl
Y3QoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpzV29ya2VyQ29udGV4dCkpOwogCiAgICAgLy8gSW5zZXJ0
IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVj
dC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjdiOWQxYTUyNDNjYjJl
MTk3NjI0OTU5NTM0Yjg0ZTVlNThhODMzYi4uMWMyZmU2NmQxZDlkNmJiYTQ3OGQ0OWE1MjJlNTk5
ZTA2MTM1ZjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC04
Niw4ICs4Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAgICBSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhlaWdodCk7CiAgICAgVjhET01X
cmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZWOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6aW5mbywgaW1hZ2UuZ2V0KCkpOwotICAgIGltYWdlLT5yZWYoKTsKLSAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoaW1hZ2UuZ2V0KCksIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworICAgIFY4RE9NV3JhcHBl
cjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbWFnZS5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IGY3
MTg5Yjc5MzMzNTZkMGYyYzcwYTRjMDA1NmZkNzNhYWMxZGZmZWIuLjUzZjM0NDIxZDdiNDVhM2Y4
OTQ0YzY2OWQ3YTE5ZGIwNWRhYTZiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdE11dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCkBAIC03NSw4ICs3NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyCiAgICAg
UmVmUHRyPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmVyID0gV2ViS2l0TXV0YXRpb25P
YnNlcnZlcjo6Y3JlYXRlKGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKICAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIG9ic2VydmVyLmdldCgpKTsKLSAg
ICBvYnNlcnZlci0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3Qob2JzZXJ2ZXIuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJn
cy5Ib2xkZXIoKSkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0
KG9ic2VydmVyLnJlbGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdz
LkhvbGRlcigpKSk7CiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
CmluZGV4IDliNWUxMGI2NmFkMjg5NTVjZWRlZmU0ZGZkNmQwOWUzOTg5OThmYTYuLjVjMTY2MWU5
MjE0MjYxNGEzMDhlMTJjNmUwMjgxNWJjYmEzMjQxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtMTA3
LDEzICsxMDcsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogCi0gICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdy
YXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdy
YXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHdlYlNvY2tldC5nZXQoKSk7Ci0KLSAgICAvLyBB
ZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4KLSAgICB3ZWJTb2NrZXQtPnJlZigpOwotICAg
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldC5n
ZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7Ci0K
KyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh3ZWJTb2Nr
ZXQucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVy
KCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENv
bnN0cnVjdG9yLmNwcAppbmRleCA1YTViMGM2NWNkMzNiMmYxMGYxMmU1MTM1MmEwZWVlY2IzOGQx
ODI4Li43MWQ3ZGQyODY1NTJjNGJlOTU5MjMzYzMxZDEyNzhlMTcwYmUyMzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApAQCAtNjQsMTAgKzY0LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYKICAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBpc29sYXRlZENvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVz
dCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgeG1sSHR0
cFJlcXVlc3QuZ2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3JhcHBlciBtYXAu
Ci0gICAgeG1sSHR0cFJlcXVlc3QtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yQWN0aXZlRE9NT2JqZWN0KHhtbEh0dHBSZXF1ZXN0LmdldCgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCksIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwogICAgIHJldHVy
biBhcmdzLkhvbGRlcigpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135728</attachid>
            <date>2012-04-04 17:29:46 -0700</date>
            <delta_ts>2012-04-04 18:38:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82238-20120404172944.patch</filename>
            <type>text/plain</type>
            <size>14873</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZiMjA5MGNkYmQ4NTll
MTYxYjQxN2IyMjRhM2M4ZjczYWY0NzExNy4uY2RhOTg1NGRkN2Q4YWM0NjBkMjZhZjc5OGMwYWVj
YjYyOGU3ZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA0LTA0ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBQYXNzUmVmUHRyIGlu
IFY4RE9NV3JhcHBlciBpbnRlcmZhY2UgdG8gYXZvaWQgZXhwbGljaXQgcmVmKCkgY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjM4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIHIx
MTIxNjMgd2l0aG91dCBtb2RpZmljYXRpb24sIGFzIGl0IHN0aWxsIHNlZW1zIHZhbGlkLgorICAg
ICAgICBXaWxsIHdhdGNoIENocm9tZSBDYW5hcmllcyBjbG9zZWx5IGZvciBhbnkgbWVtb3J5IGlz
c3Vlcy4KKworICAgICAgICBUaGUgc2V0SlNXcmFwcGVyKiBtZXRob2RzIHByZXZpb3VzbHkgZmVh
dHVyZWQgYSBjb21tZW50IHRoYXQgYXNrZWQKKyAgICAgICAgY2FsbGVycyB0byByZWYgdGhlIG9i
amVjdHMgYmVmb3JlIHBhc3NpbmcgdGhlbSBpbi4gVGhpcyBjaGFuZ2UgbWFrZXMKKyAgICAgICAg
dGhhdCBjb250cmFjdCBleHBsaWNpdCAoYW5kIGFsbG93cyB0aGUgcmVtb3ZhbCBvZiB0aGUgY29t
bWVudCkuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIGZvciBDb25zdHJ1Y3RvckNhbGxiYWNrcywg
dGhpcyBjaGFuZ2Ugc2xpZ2h0bHkgcmVkdWNlcworICAgICAgICByZWZjb3VudCBjaHVybiBieSBw
YXNzaW5nIG9uIHRoZSBpbml0aWFsIHJlZiB2aWEgUmVmUHRyOjpyZWxlYXNlKCkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JDYWxsYmFjayk6IFVzZSBSZWZQdHI6OnJlbGVhc2UoKSB0byBhdm9pZCByZWZjb3VudCBj
aHVybiBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZigpIGNhbGwuCisgICAgICAgIChHZW5lcmF0ZU5h
bWVkQ29uc3RydWN0b3JDYWxsYmFjayk6IGRpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6
aW5zdGFsbERPTVdpbmRvdyk6IENhc3QgdG8gYSBQYXNzUmVmUHRyIGFuZCByZW1vdmUgZXhwbGlj
aXQgcmVmIGNhbGwuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZSk6IFBh
c3MgbGVha2VkIHJlZnMgaW50byB0aGUgRE9NTm9kZU1hcHMuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChWOERPTVdyYXBwZXIpOiBNYWtlIHRoZSBzZXRK
U1dyYXBwZXJGb3IqIG1ldGhvZHMgdGFrZSBQYXNzUmVmUHRyPFQ+LgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QpOiBQYXNzIGxlYWtlZCBy
ZWYgaW50byB0aGUgRE9NT2JqZWN0TWFwLgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QpOiBQYXNzIGxlYWtlZCByZWYgaW50byB0
aGUgQWN0aXZlRE9NT2JqZWN0TWFwLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOiBSZW1vdmUgZXhwbGljaXQgcmVmLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQp
OiBDYXN0IHRvIGEgUGFzc1JlZlBUciBhbmQgcmVtb3ZlIGV4cGxpY2l0IHJlZiBjYWxsLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxi
YWNrKTogVXNlIFJlZlB0cjo6cmVsZWFzZSgpIHRvIGF2b2lkIHJlZmNvdW50IGNodXJuIGFuZCBy
ZW1vdmUgZXhwbGljaXQgcmVmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJLaXRN
dXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTogZGl0
dG8uCisKIDIwMTItMDQtMDQgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBXYXZlVGFibGU6OndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koKSBzaG91
bGQgcHJvcGVybHkgaW50ZXJwcmV0IG5lZ2F0aXZlIGZyZXF1ZW5jeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkOGUyMTJk
NTE1NzM3MTI3ZGRmODY5OGQ2MjQyYjc3MGIxOGMyOTdiLi45NzFjZmE2Mjk4MmE3ZGM3NDlhYTA3
MzFlMDE4MGQ5NTBjNWRhZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTc2Miw4ICsxNzYyLDcgQEAgRU5ECiAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3Jh
cHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgaW1wbC0+cmVmKCk7Ci0gICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5nZXQoKSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CisgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxlYXNlKCksIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwogICAgIHJldHVybiBhcmdzLkhvbGRlcigp
OwogRU5ECiAKQEAgLTE5NDQsOCArMTk0Myw3IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJlY4
JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCBpbXBsLmdldCgpKTsKLSAgICBpbXBs
LT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShp
bXBsLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsKKyAg
ICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLnJlbGVhc2Uo
KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CiAgICAgcmV0dXJu
IGFyZ3MuSG9sZGVyKCk7CiBFTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAzZTE2OTA0NTgzZTFjYjFhMTU4YmYxNDdmMzRiNTdi
N2EzMzhjZjMyLi5jMDk0NDUwZGJhNDgzOTcxZjA2NjE4NTkyMzQxMDM0ZDhjNWI5NDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAt
NDExLDggKzQxMSw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdyh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kCiAgICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKGpzV2luZG93LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAg
ICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoanNXaW5kb3ctPkdldFByb3RvdHlwZSgpKSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cp
OwogCi0gICAgd2luZG93LT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckRPTU9iamVjdCh3aW5kb3csIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoanNXaW5k
b3cpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChQYXNzUmVm
UHRyPERPTVdpbmRvdz4od2luZG93KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhq
c1dpbmRvdykpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSB3aW5kb3cgaW5zdGFuY2UgYXMgdGhlIHBy
b3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHY4UmVhbEdsb2JhbCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29udGV4dC0+R2xv
YmFsKCktPkdldFByb3RvdHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCmluZGV4IGEwM2NiYjgxNWNjMWFmNDIyMWM3NDk2YjI5OTAyOWQ3MjdiMjhl
N2UuLjg0ZmQxNzJkMjBhNzIyNDVlMTYyYTY3MTZkOTc4NWRhZDliMWI1OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjksMzAgKzY5LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGhlIGNhbGxlciBtdXN0IGhhdmUgaW5jcmVh
c2VkIG9iaidzIHJlZiBjb3VudC4KLXZvaWQgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3Qodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
KQordm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogewotICAgIEFT
U0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcih3cmFwcGVyKSk7Ci0gICAgQVNTRVJU
KCFkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+dG9BY3RpdmVET01PYmplY3RGdW5jdGlvbik7Ci0g
ICAgZ2V0RE9NT2JqZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlcik7Ci19Ci0KLS8vIFRoZSBj
YWxsZXIgbXVzdCBoYXZlIGluY3JlYXNlZCBvYmoncyByZWYgY291bnQuCi12b2lkIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHZvaWQqIG9iamVjdCwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhET01XcmFwcGVy
OjptYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwotICAgIEFTU0VSVChkb21XcmFwcGVyVHlwZSh3
cmFwcGVyKS0+dG9BY3RpdmVET01PYmplY3RGdW5jdGlvbik7Ci0gICAgZ2V0QWN0aXZlRE9NT2Jq
ZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlcik7Ci19Ci0KLS8vIFRoZSBjYWxsZXIgbXVzdCBo
YXZlIGluY3JlYXNlZCBub2RlJ3MgcmVmIGNvdW50Lgotdm9pZCBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU5vZGUoTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlcikKLXsKLSAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIod3Jh
cHBlcikpOworICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOwogICAgIGlmIChu
b2RlLT5pc0FjdGl2ZU5vZGUoKSkKLSAgICAgICAgZ2V0QWN0aXZlRE9NTm9kZU1hcCgpLnNldChu
b2RlLCB3cmFwcGVyKTsKKyAgICAgICAgZ2V0QWN0aXZlRE9NTm9kZU1hcCgpLnNldChub2RlLmxl
YWtSZWYoKSwgd3JhcHBlcik7CiAgICAgZWxzZQotICAgICAgICBnZXRET01Ob2RlTWFwKCkuc2V0
KG5vZGUsIHdyYXBwZXIpOworICAgICAgICBnZXRET01Ob2RlTWFwKCkuc2V0KG5vZGUubGVha1Jl
ZigpLCB3cmFwcGVyKTsKIH0KIAogdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhET01XcmFwcGVy
Ojpjb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCBET01XaW5kb3cqIHdp
bmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggNjZl
NzI2OTQ2NGM0ZjBjNWJlMmFhNzJhZmI2MmI0NTM3MDllY2MyOS4uZDc2NjMwNzU1YjNmMmNjODQx
OWJlOWMzNGI2NWEyMzFiNzIxYjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbVhQYXRoTlNSZXNv
bHZlci5oIgorI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhFdmVudC5oIgogI2lu
Y2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAg
LTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx2
OC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDQsMTAgKzEwNiw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNv
bnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm8qLCBXb3JrZXJDb250ZXh0Kik7CiAjZW5k
aWYKIAotICAgICAgICAvLyBTZXQgSlMgd3JhcHBlciBvZiBhIERPTSBvYmplY3QsIHRoZSBjYWxs
ZXIgaW4gY2hhcmdlIG9mIGluY3JlYXNlIHJlZi4KLSAgICAgICAgc3RhdGljIHZvaWQgc2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh2b2lkKiwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwotICAgICAgICBzdGF0aWMgdm9pZCBzZXRKU1dy
YXBwZXJGb3JET01Ob2RlKE5vZGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckRPTU9i
amVjdChQYXNzUmVmUHRyPFQ+LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckFjdGl2ZURP
TU9iamVjdChQYXNzUmVmUHRyPFQ+LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1JlZlB0cjxOb2RlPiwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzVmFs
aWRET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIApAQCAtMTUxLDYgKzE1MiwyMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBWOEJpbmRpbmdQZXJDb250ZXh0
RGF0YSogcGVyQ29udGV4dERhdGEoV29ya2VyQ29udGV4dCopOwogI2VuZGlmCiAgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIo
d3JhcHBlcikpOworICAgICAgICBBU1NFUlQoIWRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpLT50b0Fj
dGl2ZURPTU9iamVjdEZ1bmN0aW9uKTsKKyAgICAgICAgZ2V0RE9NT2JqZWN0TWFwKCkuc2V0KG9i
amVjdC5sZWFrUmVmKCksIHdyYXBwZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVj
dChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikpOworICAg
ICAgICBBU1NFUlQoZG9tV3JhcHBlclR5cGUod3JhcHBlciktPnRvQWN0aXZlRE9NT2JqZWN0RnVu
Y3Rpb24pOworICAgICAgICBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5zZXQob2JqZWN0LmxlYWtS
ZWYoKSwgd3JhcHBlcik7CisgICAgfQogfQogCiAjZW5kaWYgLy8gVjhET01XcmFwcGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCA0OTRjYTNjZDdhMTM4ZmEzOTFlN2Y3
OTRlY2VhZDVmM2YzNjEwYjkwLi5mZGQ4YmI3MzQ5Y2E1NTM0NjIxMDg2ZDlmYTFmMzc4OTRiNGFm
ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC0zNTQsMTEgKzM1NCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5l
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOChQYXNzUmVmUHRyPFQ+IG9iamVjdCwgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGhvbGRlciwgSW5kZXBlbmRlbnRNb2RlIGluZGVwZW5kZW50ID0gRG9O
b3RNYXJrSW5kZXBlbmRlbnQpCiAgICAgewotICAgICAgICBvYmplY3QtPnJlZigpOwogICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBoYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Pjo6TmV3KGhvbGRlcik7CiAgICAgICAgIGlmIChpbmRlcGVuZGVudCA9PSBNYXJrSW5k
ZXBlbmRlbnQpCiAgICAgICAgICAgICBoYW5kbGUuTWFya0luZGVwZW5kZW50KCk7Ci0gICAgICAg
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG9iamVjdC5nZXQoKSwgaGFu
ZGxlKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qob2Jq
ZWN0LCBoYW5kbGUpOwogICAgICAgICByZXR1cm4gaG9sZGVyOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHAKaW5kZXggY2M1YzFmODYwNDAwOGZhYTE5NTNjNDk0NTU3MmYwZDJlNTVjMTM5ZC4u
MWY0ODQ4YmFkOTY1YTI5MTI5ZWYwNmIyYzQ4Yzk5NzI3MzUzMWQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHkuY3BwCkBAIC0xNzksOCArMTc5LDcgQEAgYm9vbCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHk6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogICAgIC8vIFdyYXAgdGhlIG9iamVjdC4KICAgICBW
OERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNXb3JrZXJDb250ZXh0LCBjb250ZXh0VHlwZSwg
bV93b3JrZXJDb250ZXh0KTsKIAotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9N
T2JqZWN0KG1fd29ya2VyQ29udGV4dCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhq
c1dvcmtlckNvbnRleHQpKTsKLSAgICBtX3dvcmtlckNvbnRleHQtPnJlZigpOworICAgIFY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4
dD4obV93b3JrZXJDb250ZXh0KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhqc1dv
cmtlckNvbnRleHQpKTsKIAogICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3RhbmNlIGFzIHRo
ZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4
dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDY3YjlkMWE1MjQzY2IyZTE5NzYyNDk1OTUzNGI4NGU1ZTU4YTgzM2Iu
LjFjMmZlNjZkMWQ5ZDZiYmE0NzhkNDlhNTIyZTU5OWUwNjEzNWYxNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtODYsOCArODYsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZwogCiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTElt
YWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0
aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdz
LkhvbGRlcigpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIGltYWdlLmdl
dCgpKTsKLSAgICBpbWFnZS0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01Ob2RlKGltYWdlLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUo
aW1hZ2UucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9s
ZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCBmNzE4OWI3OTMzMzU2ZDBmMmM3MGE0YzAwNTZm
ZDczYWFjMWRmZmViLi41M2YzNDQyMWQ3YjQ1YTNmODk0NGM2NjlkN2ExOWRiMDVkYWE2YmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNzUsOCArNzUsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAgIFJlZlB0cjxXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyPiBvYnNlcnZlciA9IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5y
ZWxlYXNlKCkpOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVy
KCksICZpbmZvLCBvYnNlcnZlci5nZXQoKSk7Ci0gICAgb2JzZXJ2ZXItPnJlZigpOwotICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KG9ic2VydmVyLmdldCgpLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChvYnNlcnZlci5yZWxlYXNlKCksIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwogICAgIHJldHVybiBh
cmdzLkhvbGRlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA5YjVlMTBiNjZhZDI4OTU1Y2Vk
ZWZlNGRmZDZkMDllMzk4OTk4ZmE2Li41YzE2NjFlOTIxNDI2MTRhMzA4ZTEyYzZlMDI4MTViY2Jh
MzI0MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEwNywxMyArMTA3LDggQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsK
IAotICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVjdCBpbnRlcm5hbCBmaWVs
ZHMuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCB3ZWJTb2NrZXQuZ2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3JhcHBlciBt
YXAuCi0gICAgd2ViU29ja2V0LT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckFjdGl2ZURPTU9iamVjdCh3ZWJTb2NrZXQuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwotCisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JBY3RpdmVET01PYmplY3Qod2ViU29ja2V0LnJlbGVhc2UoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CiAgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWE1YjBj
NjVjZDMzYjJmMTBmMTJlNTEzNTJhMGVlZWNiMzhkMTgyOC4uNzFkN2RkMjg2NTUyYzRiZTk1OTIz
M2MzMWQxMjc4ZTE3MGJlMjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAK
QEAgLTY0LDEwICs2NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIHNlY3Vy
aXR5T3JpZ2luID0gaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogICAgIFJlZlB0
cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIHhtbEh0dHBSZXF1ZXN0LmdldCgpKTsKLQotICAgIC8v
IEFkZCBvYmplY3QgdG8gdGhlIHdyYXBwZXIgbWFwLgotICAgIHhtbEh0dHBSZXF1ZXN0LT5yZWYo
KTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdCh4bWxI
dHRwUmVxdWVzdC5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhv
bGRlcigpKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmpl
Y3QoeG1sSHR0cFJlcXVlc3QucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6
TmV3KGFyZ3MuSG9sZGVyKCkpKTsKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>