<?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>121323</bug_id>
          
          <creation_ts>2013-09-13 14:36:42 -0700</creation_ts>
          <short_desc>Make FloatingObjects own it&apos;s FloatingObject instances</short_desc>
          <delta_ts>2014-10-27 13:31:52 -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>Layout and Rendering</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="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>phiw2</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929021</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-13 14:36:42 -0700</bug_when>
    <thetext>Make FloatingObjects own it&apos;s FloatingObject instances</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929047</commentid>
    <comment_count>1</comment_count>
      <attachid>211598</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-13 16:10:50 -0700</bug_when>
    <thetext>Created attachment 211598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929061</commentid>
    <comment_count>2</comment_count>
      <attachid>211598</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-13 16:46:48 -0700</bug_when>
    <thetext>Comment on attachment 211598
Patch

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

Looks good. Thanks!

&gt; Source/WebCore/rendering/FloatingObjects.cpp:174
&gt; +void FloatingObjects::exportToFloatInfoMap(RendererToFloatInfoMap&amp; map)

nit: The function name is confusing as it doesn&apos;t say it is releasing the ownership of its own content.

&gt; Source/WebCore/rendering/RenderBlock.cpp:3307
&gt; +    m_floatingObjects-&gt;add(newObj.release());

nit: Might be usefull to make &quot;add&quot; return a pointer to the floating object to avoid the manual store on the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929921</commentid>
    <comment_count>3</comment_count>
      <attachid>211831</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-16 14:28:28 -0700</bug_when>
    <thetext>Created attachment 211831
Patch

rename export method and make FloatingObjects::add have a return value per review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929924</commentid>
    <comment_count>4</comment_count>
      <attachid>211832</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-16 14:30:10 -0700</bug_when>
    <thetext>Created attachment 211832
Patch

Add reviewer name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929941</commentid>
    <comment_count>5</comment_count>
      <attachid>211832</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 15:00:37 -0700</bug_when>
    <thetext>Comment on attachment 211832
Patch

Clearing flags on attachment: 211832

Committed r155906: &lt;http://trac.webkit.org/changeset/155906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929942</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 15:00:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930494</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Wittenbergh">phiw2</who>
    <bug_when>2013-09-17 20:10:04 -0700</bug_when>
    <thetext>Did this cause bug 121532 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930638</commentid>
    <comment_count>8</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2013-09-18 08:40:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Did this cause bug 121532 ?

It looks like it may have. I&apos;m looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044316</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-27 13:31:52 -0700</bug_when>
    <thetext>This caused bug 138100.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211598</attachid>
            <date>2013-09-13 16:10:50 -0700</date>
            <delta_ts>2013-09-16 14:28:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121323-20130913161050.patch</filename>
            <type>text/plain</type>
            <size>20276</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY3NmFmYjJmNDZiMzZl
MDgzNDg4MzBhMWNiYzBjMThhZmQ2NDJkYy4uYTVlMTM1ZmUyZGU1MGYzYjkwYWI1MWQ2ZGI0NTJi
Y2Y3MGQ4M2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA5LTEzICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIE1ha2UgRmxvYXRpbmdP
YmplY3RzIG93biBpdCdzIEZsb2F0aW5nT2JqZWN0IGluc3RhbmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGFydCBvZiBkZWNvdXBsaW5nIEZs
b2F0aW5nT2JqZWN0cyBmcm9tIFJlbmRlckJsb2NrLCBjaGFuZ2UKKyAgICAgICAgRmxvYXRpbmdP
YmplY3RzIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgRmxvYXRpbmdPYmplY3QgaW5zdGFuY2VzIGl0
CisgICAgICAgIGNvbnRhaW5zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOiBNYWtlIHRoZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgcHJpdmF0ZSBzbyB0aGF0IEZsb2F0aW5nT2JqZWN0cyBjYW4g
b25seSBiZSBjcmVhdGVkIHdpdGggYW4gT3duUHRyLgorICAgICAgICBBbHNvIG1ha2UgYSBSZW5k
ZXJCb3ggcmVxdWlyZWQgdG8gY3JlYXRlIGEgRmxvYXRpbmdPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpGbG9hdGluZ09iamVjdDo6Y3JlYXRlKTogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEg
dmFuaWxsYQorICAgICAgICBGbG9hdGluZ09iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0
aW5nT2JqZWN0Ojpjb3B5VG9OZXdDb250YWluZXIpOiBGYWN0b3J5IG1ldGhvZCB0byBjb3B5Cisg
ICAgICAgIGFuIGV4aXN0aW5nIEZsb2F0aW5nT2JqZWN0IGluIHRoZSBjYXNlIGl0IGlzIG92ZXJo
YW5naW5nIG9yIGludHJ1ZGluZworICAgICAgICBhbmQgbmVlZHMgdG8gYmUgY29waWVkIHRvIHRo
ZSBibG9jayB0aGF0IGl0IG92ZXJoYW5ncyBvciBpbnRydWRlcworICAgICAgICBpbnRvLgorICAg
ICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OnVuc2FmZUNsb25lKTogUmVuYW1lIHRoaXMg
bWV0aG9kIHNvIGl0IGlzCisgICAgICAgIG1vcmUgb2J2aW91cyB0aGF0IGl0IHJlYWxseSBzaG91
bGRuJ3QgYmUgdXNlZCwgYW5kIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3VzIHRoYXQg
b25lIHNob3VsZCB1c2UgdGhlIGNvcHlUb05ld0NvbnRhaW5lciBtZXRob2QgZm9yIGFsbAorICAg
ICAgICBub3JtYWwgRmxvYXRpbmdPYmplY3QgY29waWVzLgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3RzOjpjbGVhcik6IERlbGV0ZSBhbGwgdGhlIEZsb2F0aW5nT2JqZWN0cyBpbgor
ICAgICAgICB0aGUgc2V0IGJlZm9yZSBjbGVhcmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkZs
b2F0aW5nT2JqZWN0czo6ZXhwb3J0VG9GbG9hdEluZm9NYXApOiBNb3ZlIGFsbCBvZiB0aGUKKyAg
ICAgICAgRmxvYXRpbmdPYmplY3RzIGluIHRoZSBzZXQgdG8gYSBSZW5kZXJlclRvRmxvYXRJbmZv
TWFwLiBUaGlzIGlzIHVzZWQKKyAgICAgICAgaW4gUmVuZGVyQmxvY2tGbG93OjpjbGVhckZsb2F0
cyB0byB3aGVuIGl0IGlzIHJlYWRkaW5nIGZsb2F0cyBhZnRlcgorICAgICAgICBjbGVhcmluZyB0
aGUgc2V0LgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjphZGQpOiBUYWtlIGFu
IE93blB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlKTogRGVs
ZXRlIHRoZSByZW1vdmVkIEZsb2F0aW5nT2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuaDogUmVtb3ZlIEZsb2F0aW5nT2JqZWN0OjpzZXRSZW5kZXJlcigpLAorICAg
ICAgICBzaW5jZSB0aGUgUmVuZGVyQm94IG11c3QgYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKTogUmVuYW1lIGNs
b25lCisgICAgICAgIHRvIHVuc2FmZUNsb25lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cyk6IERvbid0IGRlbGV0ZSBhbnltb3JlLAorICAgICAg
ICBzaW5jZSBjbGVhciBkb2VzIGl0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omlu
c2VydEZsb2F0aW5nT2JqZWN0KTogSGFuZGxlIE93blB0ciBwcm9wZXJseS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdCk6IERvbid0IGRlbGV0ZSBh
bnltb3JlLAorICAgICAgICBzaW5jZSByZW1vdmUgZG9lcyBpdC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZE92ZXJoYW5naW5nRmxvYXRzKTogVXNlIGNvcHlU
b05ld0NvbnRhaW5lcgorICAgICAgICBhbmQgT3duUHRyLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpjbGVhckZsb2F0cyk6IFVzZSBleHBvcnRUb0Zsb2F0SW5mb01hcC4KKwogMjAxMy0wOS0xMyAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NUVEVdIFJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIgaXMgbmV2ZXIgYW5vbnltb3VzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0NzlhOTk2OTAyYjA1
ZDJjMTE3ZmYxMzI3Yjg2ZmM1M2M1MjQ5N2ZmLi4zNWIwOTFhOGY1YTU3YTQzMGUxNTM5OWJhMTU1
YTBjNWUwNDUxNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmpl
Y3RzLmNwcApAQCAtNDIsNiArNDIsNjMgQEAgc3RydWN0IFNhbWVTaXplQXNGbG9hdGluZ09iamVj
dCB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihGbG9hdGluZ09iamVjdCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNGbG9hdGluZ09iamVjdCksIEZsb2F0aW5nT2JqZWN0X3Nob3VsZF9zdGF5X3NtYWxs
KTsKIAorRmxvYXRpbmdPYmplY3Q6OkZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCogcmVuZGVyZXIp
CisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9vcmlnaW5hdGluZ0xpbmUoMCkK
KyAgICAsIG1fcGFnaW5hdGlvblN0cnV0KDApCisgICAgLCBtX3Nob3VsZFBhaW50KHRydWUpCisg
ICAgLCBtX2lzRGVzY2VuZGFudChmYWxzZSkKKyAgICAsIG1faXNQbGFjZWQoZmFsc2UpCisjaWZu
ZGVmIE5ERUJVRworICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKKyNlbmRpZgoreworICAg
IEVGbG9hdCB0eXBlID0gcmVuZGVyZXItPnN0eWxlKCktPmZsb2F0aW5nKCk7CisgICAgQVNTRVJU
KHR5cGUgIT0gTm9GbG9hdCk7CisgICAgaWYgKHR5cGUgPT0gTGVmdEZsb2F0KQorICAgICAgICBt
X3R5cGUgPSBGbG9hdExlZnQ7CisgICAgZWxzZSBpZiAodHlwZSA9PSBSaWdodEZsb2F0KQorICAg
ICAgICBtX3R5cGUgPSBGbG9hdFJpZ2h0OworfQorCitGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdP
YmplY3QoUmVuZGVyQm94KiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JiBm
cmFtZVJlY3QsIGJvb2wgc2hvdWxkUGFpbnQsIGJvb2wgaXNEZXNjZW5kYW50KQorICAgIDogbV9y
ZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fb3JpZ2luYXRpbmdMaW5lKDApCisgICAgLCBtX2Zy
YW1lUmVjdChmcmFtZVJlY3QpCisgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQorICAgICwgbV90
eXBlKHR5cGUpCisgICAgLCBtX3Nob3VsZFBhaW50KHNob3VsZFBhaW50KQorICAgICwgbV9pc0Rl
c2NlbmRhbnQoaXNEZXNjZW5kYW50KQorICAgICwgbV9pc1BsYWNlZCh0cnVlKQorI2lmbmRlZiBO
REVCVUcKKyAgICAsIG1faXNJblBsYWNlZFRyZWUoZmFsc2UpCisjZW5kaWYKK3sKK30KKworUGFz
c093blB0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gq
IHJlbmRlcmVyKQoreworICAgIE93blB0cjxGbG9hdGluZ09iamVjdD4gbmV3T2JqID0gYWRvcHRQ
dHIobmV3IEZsb2F0aW5nT2JqZWN0KHJlbmRlcmVyKSk7CisgICAgbmV3T2JqLT5zZXRTaG91bGRQ
YWludCghcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4
aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRzZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNl
IHdpbGwuCisgICAgbmV3T2JqLT5zZXRJc0Rlc2NlbmRhbnQodHJ1ZSk7CisKKyAgICByZXR1cm4g
bmV3T2JqLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91
bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBGbG9hdGluZ09iamVjdChyZW5kZXJlcigpLCB0eXBlKCksIExheW91dFJlY3QoZnJhbWVS
ZWN0KCkubG9jYXRpb24oKSAtIG9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgc2hvdWxkUGFp
bnQsIGlzRGVzY2VuZGFudCkpOworfQorCitQYXNzT3duUHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9h
dGluZ09iamVjdDo6dW5zYWZlQ2xvbmUoKSBjb25zdAoreworICAgIE93blB0cjxGbG9hdGluZ09i
amVjdD4gY2xvbmVPYmplY3QgPSBhZG9wdFB0cihuZXcgRmxvYXRpbmdPYmplY3QocmVuZGVyZXIo
KSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpKTsK
KyAgICBjbG9uZU9iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUgPSBtX29yaWdpbmF0aW5nTGluZTsK
KyAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsK
KyAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CisgICAgcmV0dXJuIGNs
b25lT2JqZWN0LnJlbGVhc2UoKTsKK30KKwogdGVtcGxhdGUgPEZsb2F0aW5nT2JqZWN0OjpUeXBl
IEZsb2F0VHlwZVZhbHVlPgogY2xhc3MgQ29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlciB7CiBwdWJs
aWM6CkBAIC0xMDcsMTUgKzE2NCwyNiBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6Y2xlYXJMaW5l
Qm94VHJlZVBvaW50ZXJzKCkKIAogdm9pZCBGbG9hdGluZ09iamVjdHM6OmNsZWFyKCkKIHsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2FsbCBkZWxldGVBbGxWYWx1ZXMsIGV4Y2VwdCBjbGVh
ckZsb2F0cwotICAgIC8vIGxpa2UgdG8gcGxheSBmYXN0IGFuZCBsb29zZSB3aXRoIG93bmVyc2hp
cCBvZiB0aGVzZSBwb2ludGVycy4KLSAgICAvLyBJZiB3ZSBtb3ZlIHRvIE93blB0ciB0aGF0IHdp
bGwgZml4IHRoaXMgb3duZXJzaGlwIG9kZG5lc3MuCisgICAgZGVsZXRlQWxsVmFsdWVzKG1fc2V0
KTsKICAgICBtX3NldC5jbGVhcigpOwogICAgIG1fcGxhY2VkRmxvYXRzVHJlZS5jbGVhcigpOwog
ICAgIG1fbGVmdE9iamVjdHNDb3VudCA9IDA7CiAgICAgbV9yaWdodE9iamVjdHNDb3VudCA9IDA7
CiB9CiAKK3ZvaWQgRmxvYXRpbmdPYmplY3RzOjpleHBvcnRUb0Zsb2F0SW5mb01hcChSZW5kZXJl
clRvRmxvYXRJbmZvTWFwJiBtYXApCit7CisgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBl
bmQgPSBtX3NldC5lbmQoKTsKKyAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQg
PSBtX3NldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIGYgPSAqaXQ7CisgICAgICAgIG1hcC5hZGQoZi0+cmVuZGVyZXIoKSwgZik7CisgICAgfQor
ICAgIC8vIGNsZWFyIHNldCBiZWZvcmUgY2xlYXJpbmcgdGhpcyBiZWNhdXNlIHdlIGRvbid0IHdh
bnQgdG8gZGVsZXRlIGFsbCBvZgorICAgIC8vIHRoZSBvYmplY3RzIHdlIGhhdmUganVzdCB0cmFu
c2ZlcnJlZC4KKyAgICBtX3NldC5jbGVhcigpOworICAgIGNsZWFyKCk7Cit9CisKIHZvaWQgRmxv
YXRpbmdPYmplY3RzOjppbmNyZWFzZU9iamVjdHNDb3VudChGbG9hdGluZ09iamVjdDo6VHlwZSB0
eXBlKQogewogICAgIGlmICh0eXBlID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQpCkBAIC0x
NjcsMTIgKzIzNSwxMyBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlUGxhY2VkT2JqZWN0
KEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKICNlbmRpZgogfQogCi12b2lkIEZsb2F0
aW5nT2JqZWN0czo6YWRkKEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK3ZvaWQgRmxv
YXRpbmdPYmplY3RzOjphZGQoUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gZmxvYXRpbmdPYmpl
Y3QpCiB7Ci0gICAgaW5jcmVhc2VPYmplY3RzQ291bnQoZmxvYXRpbmdPYmplY3QtPnR5cGUoKSk7
Ci0gICAgbV9zZXQuYWRkKGZsb2F0aW5nT2JqZWN0KTsKLSAgICBpZiAoZmxvYXRpbmdPYmplY3Qt
PmlzUGxhY2VkKCkpCi0gICAgICAgIGFkZFBsYWNlZE9iamVjdChmbG9hdGluZ09iamVjdCk7Cisg
ICAgRmxvYXRpbmdPYmplY3QqIG5ld09iamVjdCA9IGZsb2F0aW5nT2JqZWN0LmxlYWtQdHIoKTsK
KyAgICBpbmNyZWFzZU9iamVjdHNDb3VudChuZXdPYmplY3QtPnR5cGUoKSk7CisgICAgbV9zZXQu
YWRkKG5ld09iamVjdCk7CisgICAgaWYgKG5ld09iamVjdC0+aXNQbGFjZWQoKSkKKyAgICAgICAg
YWRkUGxhY2VkT2JqZWN0KG5ld09iamVjdCk7CiB9CiAKIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpy
ZW1vdmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQpAQCAtMTgyLDYgKzI1MSw4IEBA
IHZvaWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2Jq
ZWN0KQogICAgIEFTU0VSVChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSB8fCAhZmxvYXRpbmdP
YmplY3QtPmlzSW5QbGFjZWRUcmVlKCkpOwogICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFj
ZWQoKSkKICAgICAgICAgcmVtb3ZlUGxhY2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBB
U1NFUlQoIWZsb2F0aW5nT2JqZWN0LT5vcmlnaW5hdGluZ0xpbmUoKSk7CisgICAgZGVsZXRlIGZs
b2F0aW5nT2JqZWN0OwogfQogCiB2b2lkIEZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZs
b2F0c1RyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5n
T2JqZWN0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCmlu
ZGV4IDhmZWRlMDdmMWEyN2I3NzAyOGYxMTA3NWYyZTdiZmY0NTYzNWM1N2IuLjZiYTE1ZWNkNTg2
OTYxY2VjNDllZmFiYzZiMTUyOWY0NjI1ZGUxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQT0RJbnRl
cnZhbFRyZWUuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQxLDUwICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IFR5cGUg
dXNlcyBiaXRzIHNvIHlvdSBjYW4gdXNlIEZsb2F0TGVmdFJpZ2h0IGFzIGEgbWFzayB0byBxdWVy
eSBmb3IgYm90aCBsZWZ0IGFuZCByaWdodC4KICAgICBlbnVtIFR5cGUgeyBGbG9hdExlZnQgPSAx
LCBGbG9hdFJpZ2h0ID0gMiwgRmxvYXRMZWZ0UmlnaHQgPSAzIH07CiAKLSAgICBGbG9hdGluZ09i
amVjdChFRmxvYXQgdHlwZSkKLSAgICAgICAgOiBtX3JlbmRlcmVyKDApCi0gICAgICAgICwgbV9v
cmlnaW5hdGluZ0xpbmUoMCkKLSAgICAgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQotICAgICAg
ICAsIG1fc2hvdWxkUGFpbnQodHJ1ZSkKLSAgICAgICAgLCBtX2lzRGVzY2VuZGFudChmYWxzZSkK
LSAgICAgICAgLCBtX2lzUGxhY2VkKGZhbHNlKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBt
X2lzSW5QbGFjZWRUcmVlKGZhbHNlKQotI2VuZGlmCi0gICAgewotICAgICAgICBBU1NFUlQodHlw
ZSAhPSBOb0Zsb2F0KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gTGVmdEZsb2F0KQotICAgICAgICAg
ICAgbV90eXBlID0gRmxvYXRMZWZ0OwotICAgICAgICBlbHNlIGlmICh0eXBlID09IFJpZ2h0Rmxv
YXQpCi0gICAgICAgICAgICBtX3R5cGUgPSBGbG9hdFJpZ2h0OwotICAgIH0KKyAgICBzdGF0aWMg
UGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gY3JlYXRlKFJlbmRlckJveCopOwogCi0gICAgRmxv
YXRpbmdPYmplY3QoVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QpCi0gICAg
ICAgIDogbV9yZW5kZXJlcigwKQotICAgICAgICAsIG1fb3JpZ2luYXRpbmdMaW5lKDApCi0gICAg
ICAgICwgbV9mcmFtZVJlY3QoZnJhbWVSZWN0KQotICAgICAgICAsIG1fcGFnaW5hdGlvblN0cnV0
KDApCi0gICAgICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9zaG91bGRQYWludCh0cnVl
KQotICAgICAgICAsIG1faXNEZXNjZW5kYW50KGZhbHNlKQotICAgICAgICAsIG1faXNQbGFjZWQo
dHJ1ZSkKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkK
LSNlbmRpZgotICAgIHsKLSAgICB9CisgICAgUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gY29w
eVRvTmV3Q29udGFpbmVyKExheW91dFNpemUsIGJvb2wgc2hvdWxkUGFpbnQgPSBmYWxzZSwgYm9v
bCBpc0Rlc2NlbmRhbnQgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICBGbG9hdGluZ09iamVjdCogY2xv
bmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgRmxvYXRpbmdPYmplY3QqIGNsb25lT2JqZWN0ID0g
bmV3IEZsb2F0aW5nT2JqZWN0KHR5cGUoKSwgbV9mcmFtZVJlY3QpOwotICAgICAgICBjbG9uZU9i
amVjdC0+bV9yZW5kZXJlciA9IG1fcmVuZGVyZXI7Ci0gICAgICAgIGNsb25lT2JqZWN0LT5tX29y
aWdpbmF0aW5nTGluZSA9IG1fb3JpZ2luYXRpbmdMaW5lOwotICAgICAgICBjbG9uZU9iamVjdC0+
bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKLSAgICAgICAgY2xvbmVPYmpl
Y3QtPm1fc2hvdWxkUGFpbnQgPSBtX3Nob3VsZFBhaW50OwotICAgICAgICBjbG9uZU9iamVjdC0+
bV9pc0Rlc2NlbmRhbnQgPSBtX2lzRGVzY2VuZGFudDsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1f
aXNQbGFjZWQgPSBtX2lzUGxhY2VkOwotICAgICAgICByZXR1cm4gY2xvbmVPYmplY3Q7Ci0gICAg
fQorICAgIFBhc3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+IHVuc2FmZUNsb25lKCkgY29uc3Q7CiAK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUp
OyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7
IH0KQEAgLTEyMSw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzRGVzY2VuZGFudChi
b29sIGlzRGVzY2VuZGFudCkgeyBtX2lzRGVzY2VuZGFudCA9IGlzRGVzY2VuZGFudDsgfQogCiAg
ICAgLy8gRklYTUU6IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBz
aG91bGQgYmUgd2hpdGVsaXN0ZWQgZXhwbGljaXRseSBvciByZW1vdmVkLgotICAgIHZvaWQgc2V0
UmVuZGVyZXIoUmVuZGVyQm94KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0K
ICAgICBSb290SW5saW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbmF0aW5nTGluZTsgfQogICAgIHZvaWQgc2V0T3JpZ2luYXRpbmdMaW5lKFJvb3RJbmxpbmVC
b3gqIGxpbmUpIHsgbV9vcmlnaW5hdGluZ0xpbmUgPSBsaW5lOyB9CiAKQEAgLTE2Niw2ICsxMjcs
OSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAgIEZsb2F0aW5nT2JqZWN0KFJlbmRl
ckJveCopOworICAgIEZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCosIFR5cGUsIGNvbnN0IExheW91
dFJlY3QmLCBib29sIHNob3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCk7CisKICAgICBSZW5k
ZXJCb3gqIG1fcmVuZGVyZXI7CiAgICAgUm9vdElubGluZUJveCogbV9vcmlnaW5hdGluZ0xpbmU7
CiAgICAgTGF5b3V0UmVjdCBtX2ZyYW1lUmVjdDsKQEAgLTE5NCw3ICsxNTgsNyBAQCB0eXBlZGVm
IEZsb2F0aW5nT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBGbG9hdGluZ09iamVjdFNldEl0ZXJh
dG9yOwogdHlwZWRlZiBQT0RJbnRlcnZhbDxpbnQsIEZsb2F0aW5nT2JqZWN0Kj4gRmxvYXRpbmdP
YmplY3RJbnRlcnZhbDsKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGludCwgRmxvYXRpbmdPYmpl
Y3QqPiBGbG9hdGluZ09iamVjdFRyZWU7CiB0eXBlZGVmIFBPREZyZWVMaXN0QXJlbmE8UE9EUmVk
QmxhY2tUcmVlPEZsb2F0aW5nT2JqZWN0SW50ZXJ2YWw+OjpOb2RlPiBJbnRlcnZhbEFyZW5hOwot
Cit0eXBlZGVmIEhhc2hNYXA8UmVuZGVyQm94KiwgRmxvYXRpbmdPYmplY3QqPiBSZW5kZXJlclRv
RmxvYXRJbmZvTWFwOwogCiBjbGFzcyBGbG9hdGluZ09iamVjdHMgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZsb2F0aW5nT2JqZWN0cyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MjAzLDcgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICB+RmxvYXRpbmdPYmplY3RzKCk7CiAKICAgICB2
b2lkIGNsZWFyKCk7Ci0gICAgdm9pZCBhZGQoRmxvYXRpbmdPYmplY3QqKTsKKyAgICB2b2lkIGV4
cG9ydFRvRmxvYXRJbmZvTWFwKFJlbmRlcmVyVG9GbG9hdEluZm9NYXAmKTsKKyAgICB2b2lkIGFk
ZChQYXNzT3duUHRyPEZsb2F0aW5nT2JqZWN0Pik7CiAgICAgdm9pZCByZW1vdmUoRmxvYXRpbmdP
YmplY3QqKTsKICAgICB2b2lkIGFkZFBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCopOwogICAg
IHZvaWQgcmVtb3ZlUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5NmMxNzBlYjg0MWUyYmI4YjZmOTlkMDA5
MWVhMjIyMTNkYTJlNGU4Li43YTkyNGFmODdlNjAxNjllMzA4YjdlZjczZTlhMWJkN2QzZTZhYmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTExNDgsNyAr
MTE0OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0
c1RvKFJlbmRlckJsb2NrKiB0b0Jsb2NrLCBib29sIGZ1CiAgICAgICAgICAgICBpZiAodG9CbG9j
ay0+Y29udGFpbnNGbG9hdChmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHRvQmxvY2stPm1fZmxvYXRpbmdPYmplY3Rz
LT5hZGQoZmxvYXRpbmdPYmplY3QtPmNsb25lKCkpOworICAgICAgICAgICAgdG9CbG9jay0+bV9m
bG9hdGluZ09iamVjdHMtPmFkZChmbG9hdGluZ09iamVjdC0+dW5zYWZlQ2xvbmUoKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC0zMjYwLDcgKzMyNjAsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpy
ZW1vdmVGbG9hdGluZ09iamVjdHMoKQogICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0
KCkpOwogICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwogfQogCkBAIC0zMjgxLDcgKzMy
ODAsNyBAQCBGbG9hdGluZ09iamVjdCogUmVuZGVyQmxvY2s6Omluc2VydEZsb2F0aW5nT2JqZWN0
KFJlbmRlckJveCogbykKIAogICAgIC8vIENyZWF0ZSB0aGUgc3BlY2lhbCBvYmplY3QgZW50cnkg
JiBhcHBlbmQgaXQgdG8gdGhlIGxpc3QKIAotICAgIEZsb2F0aW5nT2JqZWN0KiBuZXdPYmogPSBu
ZXcgRmxvYXRpbmdPYmplY3Qoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSk7CisgICAgT3duUHRyPEZs
b2F0aW5nT2JqZWN0PiBuZXdPYmogPSBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKG8pOwogICAgIAog
ICAgIC8vIE91ciBsb2NhdGlvbiBpcyBpcnJlbGV2YW50IGlmIHdlJ3JlIHVuc3BsaXR0YWJsZSBv
ciBubyBwYWdpbmF0aW9uIGlzIGluIGVmZmVjdC4KICAgICAvLyBKdXN0IGdvIGFoZWFkIGFuZCBs
YXkgb3V0IHRoZSBmbG9hdC4KQEAgLTMzMDQsMTMgKzMzMDMsMTAgQEAgRmxvYXRpbmdPYmplY3Qq
IFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCiAgICAgICAg
IHNoYXBlT3V0c2lkZS0+c2V0U2hhcGVTaXplKGxvZ2ljYWxXaWR0aEZvckNoaWxkKG8pLCBsb2dp
Y2FsSGVpZ2h0Rm9yQ2hpbGQobykpOwogI2VuZGlmCiAKLSAgICBuZXdPYmotPnNldFNob3VsZFBh
aW50KCFvLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRo
ZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgot
ICAgIG5ld09iai0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwotICAgIG5ld09iai0+c2V0UmVuZGVy
ZXIobyk7Ci0KLSAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKG5ld09iaik7CisgICAgRmxvYXRp
bmdPYmplY3QqIHJldHVybk9iamVjdCA9IG5ld09iai5nZXQoKTsKKyAgICBtX2Zsb2F0aW5nT2Jq
ZWN0cy0+YWRkKG5ld09iai5yZWxlYXNlKCkpOwogICAgIAotICAgIHJldHVybiBuZXdPYmo7Cisg
ICAgcmV0dXJuIHJldHVybk9iamVjdDsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRmxv
YXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQpAQCAtMzM0NSw4ICszMzQxLDYgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQogICAgICAgICAgICAg
ICAgIG1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZShyKTsKLSAgICAg
ICAgICAgIEFTU0VSVCghci0+b3JpZ2luYXRpbmdMaW5lKCkpOwotICAgICAgICAgICAgZGVsZXRl
IHI7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMzYwLDggKzMzNTQsNiBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyhGbG9hdGluZ09iamVjdCogbGFzdEZs
b2F0LCBpbnQgbG9naQogICAgIEZsb2F0aW5nT2JqZWN0KiBjdXJyID0gZmxvYXRpbmdPYmplY3RT
ZXQubGFzdCgpOwogICAgIHdoaWxlIChjdXJyICE9IGxhc3RGbG9hdCAmJiAoIWN1cnItPmlzUGxh
Y2VkKCkgfHwgY3Vyci0+bG9naWNhbFRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSA+PSBs
b2dpY2FsT2Zmc2V0KSkgewogICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlKGN1cnIp
OwotICAgICAgICBBU1NFUlQoIWN1cnItPm9yaWdpbmF0aW5nTGluZSgpKTsKLSAgICAgICAgZGVs
ZXRlIGN1cnI7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdFNldC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY3VyciA9IGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKTsK
QEAgLTM4MjksMjQgKzM4MjEsMjEgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRkT3Zlcmhh
bmdpbmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGlsZFAKICAgICAgICAg
ICAgIC8vIElmIHRoZSBvYmplY3QgaXMgbm90IGluIHRoZSBsaXN0LCB3ZSBhZGQgaXQgbm93Lgog
ICAgICAgICAgICAgaWYgKCFjb250YWluc0Zsb2F0KHItPnJlbmRlcmVyKCkpKSB7CiAgICAgICAg
ICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
TGF5b3V0U2l6ZSgtY2hpbGRMb2dpY2FsTGVmdCwgLWNoaWxkTG9naWNhbFRvcCkgOiBMYXlvdXRT
aXplKC1jaGlsZExvZ2ljYWxUb3AsIC1jaGlsZExvZ2ljYWxMZWZ0KTsKLSAgICAgICAgICAgICAg
ICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmogPSBuZXcgRmxvYXRpbmdPYmplY3Qoci0+dHlw
ZSgpLCBMYXlvdXRSZWN0KHItPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIHItPmZy
YW1lUmVjdCgpLnNpemUoKSkpOwotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRSZW5k
ZXJlcihyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBib29sIHNob3VsZFBhaW50ID0g
ZmFsc2U7CiAKICAgICAgICAgICAgICAgICAvLyBUaGUgbmVhcmVzdCBlbmNsb3NpbmcgbGF5ZXIg
YWx3YXlzIHBhaW50cyB0aGUgZmxvYXQgKHNvIHRoYXQgemluZGV4IGFuZCBzdGFja2luZwogICAg
ICAgICAgICAgICAgIC8vIGJlaGF2ZXMgcHJvcGVybHkpLiAgV2UgYWx3YXlzIHdhbnQgdG8gcHJv
cGFnYXRlIHRoZSBkZXNpcmUgdG8gcGFpbnQgdGhlIGZsb2F0IGFzCiAgICAgICAgICAgICAgICAg
Ly8gZmFyIG91dCBhcyB3ZSBjYW4sIHRvIHRoZSBvdXRlcm1vc3QgYmxvY2sgdGhhdCBvdmVybGFw
cyB0aGUgZmxvYXQsIHN0b3BwaW5nIG9ubHkKICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoaXQg
YSBzZWxmLXBhaW50aW5nIGxheWVyIGJvdW5kYXJ5LgotICAgICAgICAgICAgICAgIGlmIChyLT5y
ZW5kZXJlcigpLT5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSA9PSBlbmNsb3NpbmdGbG9h
dFBhaW50aW5nTGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBpZiAoci0+cmVuZGVyZXIoKS0+ZW5j
bG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgPT0gZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVy
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgci0+c2V0U2hvdWxkUGFpbnQoZmFsc2UpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldFNo
b3VsZFBhaW50KGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRJc0Rl
c2NlbmRhbnQodHJ1ZSk7Ci0KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkUGFpbnQgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIGZs
b2F0aW5nIG9iamVjdCBsaXN0IGxhemlseS4KICAgICAgICAgICAgICAgICBpZiAoIW1fZmxvYXRp
bmdPYmplY3RzKQogICAgICAgICAgICAgICAgICAgICBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsK
LSAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqKTsKKwor
ICAgICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoci0+Y29weVRvTmV3Q29udGFp
bmVyKG9mZnNldCwgc2hvdWxkUGFpbnQsIHRydWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtYWtlQ2hpbGRQYWludE90aGVyRmxvYXRzICYmICFy
LT5zaG91bGRQYWludCgpICYmICFyLT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigp
CkBAIC0zODk3LDI4ICszODg2LDIwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zs
b2F0cyhSZW5kZXJCbG9jayogcHJldiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mCiAgICAgICAg
IEZsb2F0aW5nT2JqZWN0KiByID0gKnByZXZJdDsKICAgICAgICAgaWYgKHItPmxvZ2ljYWxCb3R0
b20oaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgPiBsb2dpY2FsVG9wT2Zmc2V0KSB7CiAgICAg
ICAgICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzIHx8ICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0
KCkuY29udGFpbnMocikpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBMYXlvdXRTaXplKGxvZ2ljYWxMZWZ0T2Zmc2V0LCBs
b2dpY2FsVG9wT2Zmc2V0KSA6IExheW91dFNpemUobG9naWNhbFRvcE9mZnNldCwgbG9naWNhbExl
ZnRPZmZzZXQpOwotICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iaiA9
IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCksIExheW91dFJlY3Qoci0+ZnJhbWVSZWN0KCku
bG9jYXRpb24oKSAtIG9mZnNldCwgci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgLy8gV2UgY3JlYXRlIHRoZSBmbG9hdGluZyBvYmplY3QgbGlzdCBsYXppbHkuCisgICAg
ICAgICAgICAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKKyAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CiAKICAgICAgICAgICAgICAgICAvLyBBcHBseWluZyB0
aGUgY2hpbGQncyBtYXJnaW4gbWFrZXMgbm8gc2Vuc2UgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNo
aWxkIHdhcyBwYXNzZWQgaW4uCiAgICAgICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBtYXJnaW4g
d2FzIGFkZGVkIGFscmVhZHkgdGhyb3VnaCB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSB8bG9naWNh
bExlZnRPZmZzZXR8IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgLy8gYWJvdmUuICB8bG9naWNh
bExlZnRPZmZzZXR8IHdpbGwgZXF1YWwgdGhlIG1hcmdpbiBpbiB0aGlzIGNhc2UsIHNvIGl0J3Mg
YWxyZWFkeSBiZWVuIHRha2VuCiAgICAgICAgICAgICAgICAgLy8gaW50byBhY2NvdW50LiAgT25s
eSBhcHBseSB0aGlzIGNvZGUgaWYgcHJldiBpcyB0aGUgcGFyZW50LCBzaW5jZSBvdGhlcndpc2Ug
dGhlIGxlZnQgbWFyZ2luCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBnZXQgYXBwbGllZCB0d2lj
ZS4KLSAgICAgICAgICAgICAgICBpZiAocHJldiAhPSBwYXJlbnQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0aW5nT2JqLT5zZXRYKGZsb2F0aW5nT2JqLT54KCkgKyBwcmV2LT5tYXJnaW5M
ZWZ0KCkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdGluZ09iai0+c2V0WShmbG9hdGluZ09iai0+eSgpICsgcHJldi0+bWFyZ2luVG9wKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZs
b2F0aW5nT2JqLT5zZXRTaG91bGRQYWludChmYWxzZSk7IC8vIFdlIGFyZSBub3QgaW4gdGhlIGRp
cmVjdCBpbmhlcml0YW5jZSBjaGFpbiBmb3IgdGhpcyBmbG9hdC4gV2Ugd2lsbCBuZXZlciBwYWlu
dCBpdC4KLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0UmVuZGVyZXIoci0+cmVuZGVy
ZXIoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gV2UgY3JlYXRlIHRo
ZSBmbG9hdGluZyBvYmplY3QgbGlzdCBsYXppbHkuCi0gICAgICAgICAgICAgICAgaWYgKCFtX2Zs
b2F0aW5nT2JqZWN0cykKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxvYXRpbmdPYmplY3Rz
KCk7Ci0gICAgICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmFkZChmbG9hdGluZ09iaik7
CisgICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpCisgICAgICAgICAgICAgICAgICAgID8gTGF5b3V0U2l6ZShsb2dpY2FsTGVmdE9mZnNl
dCArIChwcmV2ICE9IHBhcmVudCgpID8gcHJldi0+bWFyZ2luTGVmdCgpIDogTGF5b3V0VW5pdCgp
KSwgbG9naWNhbFRvcE9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgOiBMYXlvdXRTaXplKGxv
Z2ljYWxUb3BPZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0ICsgKHByZXYgIT0gcGFyZW50KCkgPyBw
cmV2LT5tYXJnaW5Ub3AoKSA6IExheW91dFVuaXQoKSkpOworCisgICAgICAgICAgICAgICAgbV9m
bG9hdGluZ09iamVjdHMtPmFkZChyLT5jb3B5VG9OZXdDb250YWluZXIob2Zmc2V0KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDFkNzVjOTE1NjAxN2EwYTNhOWI3YTE4NTMyMDc1Mzdh
Mjc5MzdmMGEuLjk3MjU5NjkwYjZiMjA4YzYwY2E0M2U3ZmNhYjQ3ZmZiODgwYjc4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0xMDMsNyAr
MTAzLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyRmxvYXRzKCkKICAgICAvLyBJbmxp
bmUgYmxvY2tzIGFyZSBjb3ZlcmVkIGJ5IHRoZSBpc1JlcGxhY2VkKCkgY2hlY2sgaW4gdGhlIGF2
b2lkRmxvYXRzIG1ldGhvZC4KICAgICBpZiAoYXZvaWRzRmxvYXRzKCkgfHwgaXNSb290KCkgfHwg
aXNSZW5kZXJWaWV3KCkgfHwgaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlz
VGFibGVDZWxsKCkpIHsKICAgICAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7Ci0gICAgICAg
ICAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ09iamVjdHMtPnNldCgpKTsKICAgICAgICAg
ICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
b2xkSW50cnVkaW5nRmxvYXRTZXQuaXNFbXB0eSgpKQpAQCAtMTExLDIwICsxMTAsMTMgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGbG9hdGluZ09iamVjdCo+IFJl
bmRlcmVyVG9GbG9hdEluZm9NYXA7CiAgICAgUmVuZGVyZXJUb0Zsb2F0SW5mb01hcCBmbG9hdE1h
cDsKIAogICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cykgewotICAgICAgICBjb25zdCBGbG9hdGlu
Z09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7
Ci0gICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKSB7Ci0gICAgICAgICAgICBGbG9hdGluZ09i
amVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwotICAgICAgICAg
ICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIGYgPSAqaXQ7Ci0gICAgICAgICAgICAgICAgZmxvYXRNYXAuYWRkKGYtPnJlbmRlcmVyKCks
IGYpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZUFs
bFZhbHVlcyhmbG9hdGluZ09iamVjdFNldCk7Ci0gICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5j
bGVhcigpOworICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKKyAgICAgICAgICAgIG1fZmxv
YXRpbmdPYmplY3RzLT5leHBvcnRUb0Zsb2F0SW5mb01hcChmbG9hdE1hcCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwogICAgIH0KIAogICAg
IC8vIFdlIHNob3VsZCBub3QgcHJvY2VzcyBmbG9hdHMgaWYgdGhlIHBhcmVudCBub2RlIGlzIG5v
dCBhIFJlbmRlckJsb2NrLiBPdGhlcndpc2UsIHdlIHdpbGwgYWRkIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211831</attachid>
            <date>2013-09-16 14:28:28 -0700</date>
            <delta_ts>2013-09-16 14:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121323-20130916142829.patch</filename>
            <type>text/plain</type>
            <size>20268</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2OWFiMWJmMGRmNThi
MzAzYzRhOWVhZmY4MWUwZDllZGQ2ZjYzYy4uNWU5YTU0NWE2MjRjZDY0ZmU2MjJmZjRmMDc4ZmZm
ZDA4NTA1YjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA5LTEzICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIE1ha2UgRmxvYXRpbmdP
YmplY3RzIG93biBpdCdzIEZsb2F0aW5nT2JqZWN0IGluc3RhbmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGFydCBvZiBkZWNvdXBsaW5nIEZs
b2F0aW5nT2JqZWN0cyBmcm9tIFJlbmRlckJsb2NrLCBjaGFuZ2UKKyAgICAgICAgRmxvYXRpbmdP
YmplY3RzIHRvIHByb3Blcmx5IG1hbmFnZSB0aGUgRmxvYXRpbmdPYmplY3QgaW5zdGFuY2VzIGl0
CisgICAgICAgIGNvbnRhaW5zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOiBNYWtlIHRoZSBj
b25zdHJ1Y3RvcnMKKyAgICAgICAgcHJpdmF0ZSBzbyB0aGF0IEZsb2F0aW5nT2JqZWN0cyBjYW4g
b25seSBiZSBjcmVhdGVkIHdpdGggYW4gT3duUHRyLgorICAgICAgICBBbHNvIG1ha2UgYSBSZW5k
ZXJCb3ggcmVxdWlyZWQgdG8gY3JlYXRlIGEgRmxvYXRpbmdPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpGbG9hdGluZ09iamVjdDo6Y3JlYXRlKTogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEg
dmFuaWxsYQorICAgICAgICBGbG9hdGluZ09iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0
aW5nT2JqZWN0Ojpjb3B5VG9OZXdDb250YWluZXIpOiBGYWN0b3J5IG1ldGhvZCB0byBjb3B5Cisg
ICAgICAgIGFuIGV4aXN0aW5nIEZsb2F0aW5nT2JqZWN0IGluIHRoZSBjYXNlIGl0IGlzIG92ZXJo
YW5naW5nIG9yIGludHJ1ZGluZworICAgICAgICBhbmQgbmVlZHMgdG8gYmUgY29waWVkIHRvIHRo
ZSBibG9jayB0aGF0IGl0IG92ZXJoYW5ncyBvciBpbnRydWRlcworICAgICAgICBpbnRvLgorICAg
ICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OnVuc2FmZUNsb25lKTogUmVuYW1lIHRoaXMg
bWV0aG9kIHNvIGl0IGlzCisgICAgICAgIG1vcmUgb2J2aW91cyB0aGF0IGl0IHJlYWxseSBzaG91
bGRuJ3QgYmUgdXNlZCwgYW5kIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3VzIHRoYXQg
b25lIHNob3VsZCB1c2UgdGhlIGNvcHlUb05ld0NvbnRhaW5lciBtZXRob2QgZm9yIGFsbAorICAg
ICAgICBub3JtYWwgRmxvYXRpbmdPYmplY3QgY29waWVzLgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3RzOjpjbGVhcik6IERlbGV0ZSBhbGwgdGhlIEZsb2F0aW5nT2JqZWN0cyBpbgor
ICAgICAgICB0aGUgc2V0IGJlZm9yZSBjbGVhcmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkZs
b2F0aW5nT2JqZWN0czo6bW92ZUFsbFRvRmxvYXRJbmZvTWFwKTogTW92ZSBhbGwgb2YgdGhlCisg
ICAgICAgIEZsb2F0aW5nT2JqZWN0cyBpbiB0aGUgc2V0IHRvIGEgUmVuZGVyZXJUb0Zsb2F0SW5m
b01hcC4gVGhpcyBpcyB1c2VkCisgICAgICAgIGluIFJlbmRlckJsb2NrRmxvdzo6Y2xlYXJGbG9h
dHMgdG8gd2hlbiBpdCBpcyByZWFkZGluZyBmbG9hdHMgYWZ0ZXIKKyAgICAgICAgY2xlYXJpbmcg
dGhlIHNldC4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6YWRkKTogVGFrZSBh
biBPd25QdHIuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OnJlbW92ZSk6IERl
bGV0ZSB0aGUgcmVtb3ZlZCBGbG9hdGluZ09iamVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmg6IFJlbW92ZSBGbG9hdGluZ09iamVjdDo6c2V0UmVuZGVyZXIoKSwKKyAg
ICAgICAgc2luY2UgdGhlIFJlbmRlckJveCBtdXN0IGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3Iu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjptb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyk6IFJlbmFtZSBj
bG9uZQorICAgICAgICB0byB1bnNhZmVDbG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHMpOiBEb24ndCBkZWxldGUgYW55bW9yZSwKKyAgICAg
ICAgc2luY2UgY2xlYXIgZG9lcyBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpp
bnNlcnRGbG9hdGluZ09iamVjdCk6IEhhbmRsZSBPd25QdHIgcHJvcGVybHkuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3QpOiBEb24ndCBkZWxldGUg
YW55bW9yZSwKKyAgICAgICAgc2luY2UgcmVtb3ZlIGRvZXMgaXQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyk6IFVzZSBjb3B5
VG9OZXdDb250YWluZXIKKyAgICAgICAgYW5kIE93blB0ci4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjphZGRJbnRydWRpbmdGbG9hdHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxv
dzo6Y2xlYXJGbG9hdHMpOiBVc2UgZXhwb3J0VG9GbG9hdEluZm9NYXAuCisKIDIwMTMtMDktMTYg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBm
b2xsb3dpbmcgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3IxNTQzNTg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDQ3OWE5OTY5MDJiMDVkMmMx
MTdmZjEzMjdiODZmYzUzYzUyNDk3ZmYuLmExOTE0MWFlNzFjNDAwZGFlNzVmNTUwYjlmYzVkN2Nl
YjA3ZTQ5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMu
Y3BwCkBAIC00Miw2ICs0Miw2MyBAQCBzdHJ1Y3QgU2FtZVNpemVBc0Zsb2F0aW5nT2JqZWN0IHsK
IAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEZsb2F0aW5nT2JqZWN0KSA9PSBzaXplb2YoU2FtZVNp
emVBc0Zsb2F0aW5nT2JqZWN0KSwgRmxvYXRpbmdPYmplY3Rfc2hvdWxkX3N0YXlfc21hbGwpOwog
CitGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiByZW5kZXJlcikKKyAg
ICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCisgICAgLCBtX29yaWdpbmF0aW5nTGluZSgwKQorICAg
ICwgbV9wYWdpbmF0aW9uU3RydXQoMCkKKyAgICAsIG1fc2hvdWxkUGFpbnQodHJ1ZSkKKyAgICAs
IG1faXNEZXNjZW5kYW50KGZhbHNlKQorICAgICwgbV9pc1BsYWNlZChmYWxzZSkKKyNpZm5kZWYg
TkRFQlVHCisgICAgLCBtX2lzSW5QbGFjZWRUcmVlKGZhbHNlKQorI2VuZGlmCit7CisgICAgRUZs
b2F0IHR5cGUgPSByZW5kZXJlci0+c3R5bGUoKS0+ZmxvYXRpbmcoKTsKKyAgICBBU1NFUlQodHlw
ZSAhPSBOb0Zsb2F0KTsKKyAgICBpZiAodHlwZSA9PSBMZWZ0RmxvYXQpCisgICAgICAgIG1fdHlw
ZSA9IEZsb2F0TGVmdDsKKyAgICBlbHNlIGlmICh0eXBlID09IFJpZ2h0RmxvYXQpCisgICAgICAg
IG1fdHlwZSA9IEZsb2F0UmlnaHQ7Cit9CisKK0Zsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVj
dChSZW5kZXJCb3gqIHJlbmRlcmVyLCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmIGZyYW1l
UmVjdCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpCisgICAgOiBtX3JlbmRl
cmVyKHJlbmRlcmVyKQorICAgICwgbV9vcmlnaW5hdGluZ0xpbmUoMCkKKyAgICAsIG1fZnJhbWVS
ZWN0KGZyYW1lUmVjdCkKKyAgICAsIG1fcGFnaW5hdGlvblN0cnV0KDApCisgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICAsIG1fc2hvdWxkUGFpbnQoc2hvdWxkUGFpbnQpCisgICAgLCBtX2lzRGVzY2Vu
ZGFudChpc0Rlc2NlbmRhbnQpCisgICAgLCBtX2lzUGxhY2VkKHRydWUpCisjaWZuZGVmIE5ERUJV
RworICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKKyNlbmRpZgoreworfQorCitQYXNzT3du
UHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCogcmVu
ZGVyZXIpCit7CisgICAgT3duUHRyPEZsb2F0aW5nT2JqZWN0PiBuZXdPYmogPSBhZG9wdFB0cihu
ZXcgRmxvYXRpbmdPYmplY3QocmVuZGVyZXIpKTsKKyAgICBuZXdPYmotPnNldFNob3VsZFBhaW50
KCFyZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7IC8vIElmIGEgbGF5ZXIgZXhpc3Rz
LCB0aGUgZmxvYXQgd2lsbCBwYWludCBpdHNlbGYuIE90aGVyd2lzZSBzb21lb25lIGVsc2Ugd2ls
bC4KKyAgICBuZXdPYmotPnNldElzRGVzY2VuZGFudCh0cnVlKTsKKworICAgIHJldHVybiBuZXdP
YmoucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09i
amVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3VsZFBh
aW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEZsb2F0aW5nT2JqZWN0KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBzaG91bGRQYWludCwg
aXNEZXNjZW5kYW50KSk7Cit9CisKK1Bhc3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5n
T2JqZWN0Ojp1bnNhZmVDbG9uZSgpIGNvbnN0Cit7CisgICAgT3duUHRyPEZsb2F0aW5nT2JqZWN0
PiBjbG9uZU9iamVjdCA9IGFkb3B0UHRyKG5ldyBGbG9hdGluZ09iamVjdChyZW5kZXJlcigpLCB0
eXBlKCksIG1fZnJhbWVSZWN0LCBtX3Nob3VsZFBhaW50LCBtX2lzRGVzY2VuZGFudCkpOworICAg
IGNsb25lT2JqZWN0LT5tX29yaWdpbmF0aW5nTGluZSA9IG1fb3JpZ2luYXRpbmdMaW5lOworICAg
IGNsb25lT2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OworICAg
IGNsb25lT2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKKyAgICByZXR1cm4gY2xvbmVP
YmplY3QucmVsZWFzZSgpOworfQorCiB0ZW1wbGF0ZSA8RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxv
YXRUeXBlVmFsdWU+CiBjbGFzcyBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyIHsKIHB1YmxpYzoK
QEAgLTEwNywxNSArMTY0LDI2IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjbGVhckxpbmVCb3hU
cmVlUG9pbnRlcnMoKQogCiB2b2lkIEZsb2F0aW5nT2JqZWN0czo6Y2xlYXIoKQogewotICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBjYWxsIGRlbGV0ZUFsbFZhbHVlcywgZXhjZXB0IGNsZWFyRmxv
YXRzCi0gICAgLy8gbGlrZSB0byBwbGF5IGZhc3QgYW5kIGxvb3NlIHdpdGggb3duZXJzaGlwIG9m
IHRoZXNlIHBvaW50ZXJzLgotICAgIC8vIElmIHdlIG1vdmUgdG8gT3duUHRyIHRoYXQgd2lsbCBm
aXggdGhpcyBvd25lcnNoaXAgb2RkbmVzcy4KKyAgICBkZWxldGVBbGxWYWx1ZXMobV9zZXQpOwog
ICAgIG1fc2V0LmNsZWFyKCk7CiAgICAgbV9wbGFjZWRGbG9hdHNUcmVlLmNsZWFyKCk7CiAgICAg
bV9sZWZ0T2JqZWN0c0NvdW50ID0gMDsKICAgICBtX3JpZ2h0T2JqZWN0c0NvdW50ID0gMDsKIH0K
IAordm9pZCBGbG9hdGluZ09iamVjdHM6Om1vdmVBbGxUb0Zsb2F0SW5mb01hcChSZW5kZXJlclRv
RmxvYXRJbmZvTWFwJiBtYXApCit7CisgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBlbmQg
PSBtX3NldC5lbmQoKTsKKyAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBt
X3NldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgRmxvYXRpbmdPYmplY3Qq
IGYgPSAqaXQ7CisgICAgICAgIG1hcC5hZGQoZi0+cmVuZGVyZXIoKSwgZik7CisgICAgfQorICAg
IC8vIGNsZWFyIHNldCBiZWZvcmUgY2xlYXJpbmcgdGhpcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
dG8gZGVsZXRlIGFsbCBvZgorICAgIC8vIHRoZSBvYmplY3RzIHdlIGhhdmUganVzdCB0cmFuc2Zl
cnJlZC4KKyAgICBtX3NldC5jbGVhcigpOworICAgIGNsZWFyKCk7Cit9CisKIHZvaWQgRmxvYXRp
bmdPYmplY3RzOjppbmNyZWFzZU9iamVjdHNDb3VudChGbG9hdGluZ09iamVjdDo6VHlwZSB0eXBl
KQogewogICAgIGlmICh0eXBlID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQpCkBAIC0xNjcs
MTIgKzIzNSwxNCBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlUGxhY2VkT2JqZWN0KEZs
b2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKICNlbmRpZgogfQogCi12b2lkIEZsb2F0aW5n
T2JqZWN0czo6YWRkKEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK0Zsb2F0aW5nT2Jq
ZWN0KiBGbG9hdGluZ09iamVjdHM6OmFkZChQYXNzT3duUHRyPEZsb2F0aW5nT2JqZWN0PiBmbG9h
dGluZ09iamVjdCkKIHsKLSAgICBpbmNyZWFzZU9iamVjdHNDb3VudChmbG9hdGluZ09iamVjdC0+
dHlwZSgpKTsKLSAgICBtX3NldC5hZGQoZmxvYXRpbmdPYmplY3QpOwotICAgIGlmIChmbG9hdGlu
Z09iamVjdC0+aXNQbGFjZWQoKSkKLSAgICAgICAgYWRkUGxhY2VkT2JqZWN0KGZsb2F0aW5nT2Jq
ZWN0KTsKKyAgICBGbG9hdGluZ09iamVjdCogbmV3T2JqZWN0ID0gZmxvYXRpbmdPYmplY3QubGVh
a1B0cigpOworICAgIGluY3JlYXNlT2JqZWN0c0NvdW50KG5ld09iamVjdC0+dHlwZSgpKTsKKyAg
ICBtX3NldC5hZGQobmV3T2JqZWN0KTsKKyAgICBpZiAobmV3T2JqZWN0LT5pc1BsYWNlZCgpKQor
ICAgICAgICBhZGRQbGFjZWRPYmplY3QobmV3T2JqZWN0KTsKKyAgICByZXR1cm4gbmV3T2JqZWN0
OwogfQogCiB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlKEZsb2F0aW5nT2JqZWN0KiBmbG9h
dGluZ09iamVjdCkKQEAgLTE4Miw2ICsyNTIsOCBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVt
b3ZlKEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKICAgICBBU1NFUlQoZmxvYXRpbmdP
YmplY3QtPmlzUGxhY2VkKCkgfHwgIWZsb2F0aW5nT2JqZWN0LT5pc0luUGxhY2VkVHJlZSgpKTsK
ICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCiAgICAgICAgIHJlbW92ZVBsYWNl
ZE9iamVjdChmbG9hdGluZ09iamVjdCk7CisgICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+b3Jp
Z2luYXRpbmdMaW5lKCkpOworICAgIGRlbGV0ZSBmbG9hdGluZ09iamVjdDsKIH0KIAogdm9pZCBG
bG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRGbG9hdHNUcmVlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAppbmRleCAzMWU2M2ZkMWEwNWM1ZTQwZDNlYzcy
NmU5YTNjZjBmYzBkMDNlZmY0Li4yOTZjN2Q2MWVlMDNhNjc2NWY5YzIwYjBkYWFiZjg0N2RiY2E5
MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVkZSAiUm9v
dElubGluZUJveC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw1MCArNDIsMTEgQEAg
cHVibGljOgogICAgIC8vIE5vdGUgdGhhdCBUeXBlIHVzZXMgYml0cyBzbyB5b3UgY2FuIHVzZSBG
bG9hdExlZnRSaWdodCBhcyBhIG1hc2sgdG8gcXVlcnkgZm9yIGJvdGggbGVmdCBhbmQgcmlnaHQu
CiAgICAgZW51bSBUeXBlIHsgRmxvYXRMZWZ0ID0gMSwgRmxvYXRSaWdodCA9IDIsIEZsb2F0TGVm
dFJpZ2h0ID0gMyB9OwogCi0gICAgZXhwbGljaXQgRmxvYXRpbmdPYmplY3QoRUZsb2F0IHR5cGUp
Ci0gICAgICAgIDogbV9yZW5kZXJlcigwKQotICAgICAgICAsIG1fb3JpZ2luYXRpbmdMaW5lKDAp
Ci0gICAgICAgICwgbV9wYWdpbmF0aW9uU3RydXQoMCkKLSAgICAgICAgLCBtX3Nob3VsZFBhaW50
KHRydWUpCi0gICAgICAgICwgbV9pc0Rlc2NlbmRhbnQoZmFsc2UpCi0gICAgICAgICwgbV9pc1Bs
YWNlZChmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9pc0luUGxhY2VkVHJlZShm
YWxzZSkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUgIT0gTm9GbG9hdCk7Ci0g
ICAgICAgIGlmICh0eXBlID09IExlZnRGbG9hdCkKLSAgICAgICAgICAgIG1fdHlwZSA9IEZsb2F0
TGVmdDsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBSaWdodEZsb2F0KQotICAgICAgICAgICAg
bV90eXBlID0gRmxvYXRSaWdodDsKLSAgICB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8RmxvYXRp
bmdPYmplY3Q+IGNyZWF0ZShSZW5kZXJCb3gqKTsKIAotICAgIEZsb2F0aW5nT2JqZWN0KFR5cGUg
dHlwZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KQotICAgICAgICA6IG1fcmVuZGVyZXIo
MCkKLSAgICAgICAgLCBtX29yaWdpbmF0aW5nTGluZSgwKQotICAgICAgICAsIG1fZnJhbWVSZWN0
KGZyYW1lUmVjdCkKLSAgICAgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQotICAgICAgICAsIG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fc2hvdWxkUGFpbnQodHJ1ZSkKLSAgICAgICAgLCBtX2lz
RGVzY2VuZGFudChmYWxzZSkKLSAgICAgICAgLCBtX2lzUGxhY2VkKHRydWUpCi0jaWZuZGVmIE5E
RUJVRwotICAgICAgICAsIG1faXNJblBsYWNlZFRyZWUoZmFsc2UpCi0jZW5kaWYKLSAgICB7Ci0g
ICAgfQorICAgIFBhc3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+IGNvcHlUb05ld0NvbnRhaW5lcihM
YXlvdXRTaXplLCBib29sIHNob3VsZFBhaW50ID0gZmFsc2UsIGJvb2wgaXNEZXNjZW5kYW50ID0g
ZmFsc2UpIGNvbnN0OwogCi0gICAgRmxvYXRpbmdPYmplY3QqIGNsb25lKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEZsb2F0aW5nT2JqZWN0KiBjbG9uZU9iamVjdCA9IG5ldyBGbG9hdGluZ09iamVj
dCh0eXBlKCksIG1fZnJhbWVSZWN0KTsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1fcmVuZGVyZXIg
PSBtX3JlbmRlcmVyOwotICAgICAgICBjbG9uZU9iamVjdC0+bV9vcmlnaW5hdGluZ0xpbmUgPSBt
X29yaWdpbmF0aW5nTGluZTsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1fcGFnaW5hdGlvblN0cnV0
ID0gbV9wYWdpbmF0aW9uU3RydXQ7Ci0gICAgICAgIGNsb25lT2JqZWN0LT5tX3Nob3VsZFBhaW50
ID0gbV9zaG91bGRQYWludDsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1faXNEZXNjZW5kYW50ID0g
bV9pc0Rlc2NlbmRhbnQ7Ci0gICAgICAgIGNsb25lT2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1Bs
YWNlZDsKLSAgICAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwotICAgIH0KKyAgICBQYXNzT3duUHRy
PEZsb2F0aW5nT2JqZWN0PiB1bnNhZmVDbG9uZSgpIGNvbnN0OwogCiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQogICAgIFJlbmRlckJv
eCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CkBAIC0xMjEsNyArODMs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0Rlc2NlbmRhbnQoYm9vbCBpc0Rlc2NlbmRhbnQp
IHsgbV9pc0Rlc2NlbmRhbnQgPSBpc0Rlc2NlbmRhbnQ7IH0KIAogICAgIC8vIEZJWE1FOiBDYWxs
ZXJzIG9mIHRoZXNlIG1ldGhvZHMgYXJlIGRhbmdlcm91cyBhbmQgc2hvdWxkIGJlIHdoaXRlbGlz
dGVkIGV4cGxpY2l0bHkgb3IgcmVtb3ZlZC4KLSAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlckJv
eCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAgICAgUm9vdElubGluZUJv
eCogb3JpZ2luYXRpbmdMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hdGluZ0xpbmU7IH0K
ICAgICB2b2lkIHNldE9yaWdpbmF0aW5nTGluZShSb290SW5saW5lQm94KiBsaW5lKSB7IG1fb3Jp
Z2luYXRpbmdMaW5lID0gbGluZTsgfQogCkBAIC0xNjYsNiArMTI3LDkgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqKTsK
KyAgICBGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqLCBUeXBlLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Ym9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpOworCiAgICAgUmVuZGVyQm94KiBt
X3JlbmRlcmVyOwogICAgIFJvb3RJbmxpbmVCb3gqIG1fb3JpZ2luYXRpbmdMaW5lOwogICAgIExh
eW91dFJlY3QgbV9mcmFtZVJlY3Q7CkBAIC0xOTQsNyArMTU4LDcgQEAgdHlwZWRlZiBGbG9hdGlu
Z09iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvcjsKIHR5
cGVkZWYgUE9ESW50ZXJ2YWw8aW50LCBGbG9hdGluZ09iamVjdCo+IEZsb2F0aW5nT2JqZWN0SW50
ZXJ2YWw7CiB0eXBlZGVmIFBPREludGVydmFsVHJlZTxpbnQsIEZsb2F0aW5nT2JqZWN0Kj4gRmxv
YXRpbmdPYmplY3RUcmVlOwogdHlwZWRlZiBQT0RGcmVlTGlzdEFyZW5hPFBPRFJlZEJsYWNrVHJl
ZTxGbG9hdGluZ09iamVjdEludGVydmFsPjo6Tm9kZT4gSW50ZXJ2YWxBcmVuYTsKLQordHlwZWRl
ZiBIYXNoTWFwPFJlbmRlckJveCosIEZsb2F0aW5nT2JqZWN0Kj4gUmVuZGVyZXJUb0Zsb2F0SW5m
b01hcDsKIAogY2xhc3MgRmxvYXRpbmdPYmplY3RzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShGbG9hdGluZ09iamVjdHMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwMyw3ICsx
NjcsOCBAQCBwdWJsaWM6CiAgICAgfkZsb2F0aW5nT2JqZWN0cygpOwogCiAgICAgdm9pZCBjbGVh
cigpOwotICAgIHZvaWQgYWRkKEZsb2F0aW5nT2JqZWN0Kik7CisgICAgdm9pZCBtb3ZlQWxsVG9G
bG9hdEluZm9NYXAoUmVuZGVyZXJUb0Zsb2F0SW5mb01hcCYpOworICAgIEZsb2F0aW5nT2JqZWN0
KiBhZGQoUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4pOwogICAgIHZvaWQgcmVtb3ZlKEZsb2F0
aW5nT2JqZWN0Kik7CiAgICAgdm9pZCBhZGRQbGFjZWRPYmplY3QoRmxvYXRpbmdPYmplY3QqKTsK
ICAgICB2b2lkIHJlbW92ZVBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMDA5MWI0MzE5ZmMzYzU2NmM2NWJj
Y2ZkYTE3ZjIwMzRkY2VlNjUxMS4uNWNkZjk1YmVkYThmM2MxZGVkNTQwMTVmOTVhYjk0YmUwZmVm
MjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMTQ4
LDcgKzExNDgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjptb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdG
bG9hdHNUbyhSZW5kZXJCbG9jayogdG9CbG9jaywgYm9vbCBmdQogICAgICAgICAgICAgaWYgKHRv
QmxvY2stPmNvbnRhaW5zRmxvYXQoZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0b0Jsb2NrLT5tX2Zsb2F0aW5nT2Jq
ZWN0cy0+YWRkKGZsb2F0aW5nT2JqZWN0LT5jbG9uZSgpKTsKKyAgICAgICAgICAgIHRvQmxvY2st
Pm1fZmxvYXRpbmdPYmplY3RzLT5hZGQoZmxvYXRpbmdPYmplY3QtPnVuc2FmZUNsb25lKCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpAQCAtMzI2MCw3ICszMjYwLDYgQEAgdm9pZCBSZW5kZXJCbG9j
azo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzKCkKICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ09iamVjdHMt
PnNldCgpKTsKICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+Y2xlYXIoKTsKIH0KIApAQCAtMzI4MSw3
ICszMjgwLDcgQEAgRmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09i
amVjdChSZW5kZXJCb3gqIG8pCiAKICAgICAvLyBDcmVhdGUgdGhlIHNwZWNpYWwgb2JqZWN0IGVu
dHJ5ICYgYXBwZW5kIGl0IHRvIHRoZSBsaXN0CiAKLSAgICBGbG9hdGluZ09iamVjdCogbmV3T2Jq
ID0gbmV3IEZsb2F0aW5nT2JqZWN0KG8tPnN0eWxlKCktPmZsb2F0aW5nKCkpOworICAgIE93blB0
cjxGbG9hdGluZ09iamVjdD4gbmV3T2JqID0gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShvKTsKICAg
ICAKICAgICAvLyBPdXIgbG9jYXRpb24gaXMgaXJyZWxldmFudCBpZiB3ZSdyZSB1bnNwbGl0dGFi
bGUgb3Igbm8gcGFnaW5hdGlvbiBpcyBpbiBlZmZlY3QuCiAgICAgLy8gSnVzdCBnbyBhaGVhZCBh
bmQgbGF5IG91dCB0aGUgZmxvYXQuCkBAIC0zMzA0LDEzICszMzAzLDcgQEAgRmxvYXRpbmdPYmpl
Y3QqIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCiAgICAg
ICAgIHNoYXBlT3V0c2lkZS0+c2V0U2hhcGVTaXplKGxvZ2ljYWxXaWR0aEZvckNoaWxkKG8pLCBs
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQobykpOwogI2VuZGlmCiAKLSAgICBuZXdPYmotPnNldFNob3Vs
ZFBhaW50KCFvLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMs
IHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxs
LgotICAgIG5ld09iai0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwotICAgIG5ld09iai0+c2V0UmVu
ZGVyZXIobyk7Ci0KLSAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKG5ld09iaik7Ci0gICAgCi0g
ICAgcmV0dXJuIG5ld09iajsKKyAgICByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMtPmFkZChuZXdP
YmoucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdPYmpl
Y3QoUmVuZGVyQm94KiBvKQpAQCAtMzM0NSw4ICszMzM4LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6
cmVtb3ZlRmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQogICAgICAgICAgICAgICAgIG1hcmtM
aW5lc0RpcnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZShyKTsKLSAgICAgICAgICAgIEFT
U0VSVCghci0+b3JpZ2luYXRpbmdMaW5lKCkpOwotICAgICAgICAgICAgZGVsZXRlIHI7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC0zMzYwLDggKzMzNTEsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpy
ZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyhGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0LCBpbnQg
bG9naQogICAgIEZsb2F0aW5nT2JqZWN0KiBjdXJyID0gZmxvYXRpbmdPYmplY3RTZXQubGFzdCgp
OwogICAgIHdoaWxlIChjdXJyICE9IGxhc3RGbG9hdCAmJiAoIWN1cnItPmlzUGxhY2VkKCkgfHwg
Y3Vyci0+bG9naWNhbFRvcChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSA+PSBsb2dpY2FsT2Zm
c2V0KSkgewogICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlKGN1cnIpOwotICAgICAg
ICBBU1NFUlQoIWN1cnItPm9yaWdpbmF0aW5nTGluZSgpKTsKLSAgICAgICAgZGVsZXRlIGN1cnI7
CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdFNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY3VyciA9IGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKTsKQEAgLTM4Mjks
MjQgKzM4MTgsMjEgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9h
dHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBib29sIG1ha2VDaGlsZFAKICAgICAgICAgICAgIC8vIElm
IHRoZSBvYmplY3QgaXMgbm90IGluIHRoZSBsaXN0LCB3ZSBhZGQgaXQgbm93LgogICAgICAgICAg
ICAgaWYgKCFjb250YWluc0Zsb2F0KHItPnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICAgICAg
TGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0U2l6
ZSgtY2hpbGRMb2dpY2FsTGVmdCwgLWNoaWxkTG9naWNhbFRvcCkgOiBMYXlvdXRTaXplKC1jaGls
ZExvZ2ljYWxUb3AsIC1jaGlsZExvZ2ljYWxMZWZ0KTsKLSAgICAgICAgICAgICAgICBGbG9hdGlu
Z09iamVjdCogZmxvYXRpbmdPYmogPSBuZXcgRmxvYXRpbmdPYmplY3Qoci0+dHlwZSgpLCBMYXlv
dXRSZWN0KHItPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIHItPmZyYW1lUmVjdCgp
LnNpemUoKSkpOwotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRSZW5kZXJlcihyLT5y
ZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBib29sIHNob3VsZFBhaW50ID0gZmFsc2U7CiAK
ICAgICAgICAgICAgICAgICAvLyBUaGUgbmVhcmVzdCBlbmNsb3NpbmcgbGF5ZXIgYWx3YXlzIHBh
aW50cyB0aGUgZmxvYXQgKHNvIHRoYXQgemluZGV4IGFuZCBzdGFja2luZwogICAgICAgICAgICAg
ICAgIC8vIGJlaGF2ZXMgcHJvcGVybHkpLiAgV2UgYWx3YXlzIHdhbnQgdG8gcHJvcGFnYXRlIHRo
ZSBkZXNpcmUgdG8gcGFpbnQgdGhlIGZsb2F0IGFzCiAgICAgICAgICAgICAgICAgLy8gZmFyIG91
dCBhcyB3ZSBjYW4sIHRvIHRoZSBvdXRlcm1vc3QgYmxvY2sgdGhhdCBvdmVybGFwcyB0aGUgZmxv
YXQsIHN0b3BwaW5nIG9ubHkKICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoaXQgYSBzZWxmLXBh
aW50aW5nIGxheWVyIGJvdW5kYXJ5LgotICAgICAgICAgICAgICAgIGlmIChyLT5yZW5kZXJlcigp
LT5lbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSA9PSBlbmNsb3NpbmdGbG9hdFBhaW50aW5n
TGF5ZXIoKSkKKyAgICAgICAgICAgICAgICBpZiAoci0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nRmxv
YXRQYWludGluZ0xheWVyKCkgPT0gZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgci0+c2V0U2hvdWxkUGFpbnQoZmFsc2UpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldFNob3VsZFBhaW50
KGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRJc0Rlc2NlbmRhbnQo
dHJ1ZSk7Ci0KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkUGFpbnQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIGZsb2F0aW5nIG9i
amVjdCBsaXN0IGxhemlseS4KICAgICAgICAgICAgICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3Rz
KQogICAgICAgICAgICAgICAgICAgICBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKLSAgICAgICAg
ICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqKTsKKworICAgICAgICAg
ICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoci0+Y29weVRvTmV3Q29udGFpbmVyKG9mZnNl
dCwgc2hvdWxkUGFpbnQsIHRydWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChtYWtlQ2hpbGRQYWludE90aGVyRmxvYXRzICYmICFyLT5zaG91bGRQ
YWludCgpICYmICFyLT5yZW5kZXJlcigpLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpCkBAIC0zODk3
LDI4ICszODgzLDIwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyhSZW5k
ZXJCbG9jayogcHJldiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE9mCiAgICAgICAgIEZsb2F0aW5n
T2JqZWN0KiByID0gKnByZXZJdDsKICAgICAgICAgaWYgKHItPmxvZ2ljYWxCb3R0b20oaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkgPiBsb2dpY2FsVG9wT2Zmc2V0KSB7CiAgICAgICAgICAgICBp
ZiAoIW1fZmxvYXRpbmdPYmplY3RzIHx8ICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuY29udGFp
bnMocikpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBMYXlvdXRTaXplKGxvZ2ljYWxMZWZ0T2Zmc2V0LCBsb2dpY2FsVG9w
T2Zmc2V0KSA6IExheW91dFNpemUobG9naWNhbFRvcE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQp
OwotICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iaiA9IG5ldyBGbG9h
dGluZ09iamVjdChyLT50eXBlKCksIExheW91dFJlY3Qoci0+ZnJhbWVSZWN0KCkubG9jYXRpb24o
KSAtIG9mZnNldCwgci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgLy8g
V2UgY3JlYXRlIHRoZSBmbG9hdGluZyBvYmplY3QgbGlzdCBsYXppbHkuCisgICAgICAgICAgICAg
ICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxv
YXRpbmdPYmplY3RzKCk7CiAKICAgICAgICAgICAgICAgICAvLyBBcHBseWluZyB0aGUgY2hpbGQn
cyBtYXJnaW4gbWFrZXMgbm8gc2Vuc2UgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNoaWxkIHdhcyBw
YXNzZWQgaW4uCiAgICAgICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBtYXJnaW4gd2FzIGFkZGVk
IGFscmVhZHkgdGhyb3VnaCB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSB8bG9naWNhbExlZnRPZmZz
ZXR8IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgLy8gYWJvdmUuICB8bG9naWNhbExlZnRPZmZz
ZXR8IHdpbGwgZXF1YWwgdGhlIG1hcmdpbiBpbiB0aGlzIGNhc2UsIHNvIGl0J3MgYWxyZWFkeSBi
ZWVuIHRha2VuCiAgICAgICAgICAgICAgICAgLy8gaW50byBhY2NvdW50LiAgT25seSBhcHBseSB0
aGlzIGNvZGUgaWYgcHJldiBpcyB0aGUgcGFyZW50LCBzaW5jZSBvdGhlcndpc2UgdGhlIGxlZnQg
bWFyZ2luCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBnZXQgYXBwbGllZCB0d2ljZS4KLSAgICAg
ICAgICAgICAgICBpZiAocHJldiAhPSBwYXJlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0aW5nT2JqLT5zZXRYKGZsb2F0aW5nT2JqLT54KCkgKyBwcmV2LT5tYXJnaW5MZWZ0KCkpOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGlu
Z09iai0+c2V0WShmbG9hdGluZ09iai0+eSgpICsgcHJldi0+bWFyZ2luVG9wKCkpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2Jq
LT5zZXRTaG91bGRQYWludChmYWxzZSk7IC8vIFdlIGFyZSBub3QgaW4gdGhlIGRpcmVjdCBpbmhl
cml0YW5jZSBjaGFpbiBmb3IgdGhpcyBmbG9hdC4gV2Ugd2lsbCBuZXZlciBwYWludCBpdC4KLSAg
ICAgICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0UmVuZGVyZXIoci0+cmVuZGVyZXIoKSk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gV2UgY3JlYXRlIHRoZSBmbG9hdGlu
ZyBvYmplY3QgbGlzdCBsYXppbHkuCi0gICAgICAgICAgICAgICAgaWYgKCFtX2Zsb2F0aW5nT2Jq
ZWN0cykKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7Ci0gICAg
ICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmFkZChmbG9hdGluZ09iaik7CisgICAgICAg
ICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpCisg
ICAgICAgICAgICAgICAgICAgID8gTGF5b3V0U2l6ZShsb2dpY2FsTGVmdE9mZnNldCArIChwcmV2
ICE9IHBhcmVudCgpID8gcHJldi0+bWFyZ2luTGVmdCgpIDogTGF5b3V0VW5pdCgpKSwgbG9naWNh
bFRvcE9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgOiBMYXlvdXRTaXplKGxvZ2ljYWxUb3BP
ZmZzZXQsIGxvZ2ljYWxMZWZ0T2Zmc2V0ICsgKHByZXYgIT0gcGFyZW50KCkgPyBwcmV2LT5tYXJn
aW5Ub3AoKSA6IExheW91dFVuaXQoKSkpOworCisgICAgICAgICAgICAgICAgbV9mbG9hdGluZ09i
amVjdHMtPmFkZChyLT5jb3B5VG9OZXdDb250YWluZXIob2Zmc2V0KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IDFkNzVjOTE1NjAxN2EwYTNhOWI3YTE4NTMyMDc1MzdhMjc5MzdmMGEu
LmVmNTg3MDhhZWE3YjFlNWI3Zjk0YjM5YjM5NGQ5Y2JjMjdjODlhODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0xMDMsNyArMTAzLDYgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyRmxvYXRzKCkKICAgICAvLyBJbmxpbmUgYmxvY2tz
IGFyZSBjb3ZlcmVkIGJ5IHRoZSBpc1JlcGxhY2VkKCkgY2hlY2sgaW4gdGhlIGF2b2lkRmxvYXRz
IG1ldGhvZC4KICAgICBpZiAoYXZvaWRzRmxvYXRzKCkgfHwgaXNSb290KCkgfHwgaXNSZW5kZXJW
aWV3KCkgfHwgaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzVGFibGVDZWxs
KCkpIHsKICAgICAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7Ci0gICAgICAgICAgICBkZWxl
dGVBbGxWYWx1ZXMobV9mbG9hdGluZ09iamVjdHMtPnNldCgpKTsKICAgICAgICAgICAgIG1fZmxv
YXRpbmdPYmplY3RzLT5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICghb2xkSW50cnVk
aW5nRmxvYXRTZXQuaXNFbXB0eSgpKQpAQCAtMTExLDIwICsxMTAsMTMgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGbG9hdGluZ09iamVjdCo+IFJlbmRlcmVyVG9G
bG9hdEluZm9NYXA7CiAgICAgUmVuZGVyZXJUb0Zsb2F0SW5mb01hcCBmbG9hdE1hcDsKIAogICAg
IGlmIChtX2Zsb2F0aW5nT2JqZWN0cykgewotICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNl
dCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7Ci0gICAgICAg
IGlmIChjaGlsZHJlbklubGluZSgpKSB7Ci0gICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0
ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwotICAgICAgICAgICAgZm9yIChG
bG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAq
aXQ7Ci0gICAgICAgICAgICAgICAgZmxvYXRNYXAuYWRkKGYtPnJlbmRlcmVyKCksIGYpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhm
bG9hdGluZ09iamVjdFNldCk7Ci0gICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwor
ICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKKyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmpl
Y3RzLT5tb3ZlQWxsVG9GbG9hdEluZm9NYXAoZmxvYXRNYXApOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+Y2xlYXIoKTsKICAgICB9CiAKICAgICAvLyBXZSBz
aG91bGQgbm90IHByb2Nlc3MgZmxvYXRzIGlmIHRoZSBwYXJlbnQgbm9kZSBpcyBub3QgYSBSZW5k
ZXJCbG9jay4gT3RoZXJ3aXNlLCB3ZSB3aWxsIGFkZCAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211832</attachid>
            <date>2013-09-16 14:30:10 -0700</date>
            <delta_ts>2013-09-16 15:00:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121323-20130916143012.patch</filename>
            <type>text/plain</type>
            <size>20273</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2OWFiMWJmMGRmNThi
MzAzYzRhOWVhZmY4MWUwZDllZGQ2ZjYzYy4uODA4MmFlNWFiYWM1MjZkZjEwNzAyMzJiNGYwNWE2
NmFjOTRkYjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA5LTE2ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIE1ha2UgRmxvYXRpbmdP
YmplY3RzIG93biBpdCdzIEZsb2F0aW5nT2JqZWN0IGluc3RhbmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzIzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleGFuZHJ1IENoaWN1bGl0YS4KKworICAgICAgICBBcyBwYXJ0IG9mIGRlY291cGxp
bmcgRmxvYXRpbmdPYmplY3RzIGZyb20gUmVuZGVyQmxvY2ssIGNoYW5nZQorICAgICAgICBGbG9h
dGluZ09iamVjdHMgdG8gcHJvcGVybHkgbWFuYWdlIHRoZSBGbG9hdGluZ09iamVjdCBpbnN0YW5j
ZXMgaXQKKyAgICAgICAgY29udGFpbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdCk6IE1ha2Ug
dGhlIGNvbnN0cnVjdG9ycworICAgICAgICBwcml2YXRlIHNvIHRoYXQgRmxvYXRpbmdPYmplY3Rz
IGNhbiBvbmx5IGJlIGNyZWF0ZWQgd2l0aCBhbiBPd25QdHIuCisgICAgICAgIEFsc28gbWFrZSBh
IFJlbmRlckJveCByZXF1aXJlZCB0byBjcmVhdGUgYSBGbG9hdGluZ09iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOiBGYWN0b3J5IG1ldGhvZCB0byBjcmVh
dGUgYSB2YW5pbGxhCisgICAgICAgIEZsb2F0aW5nT2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcik6IEZhY3RvcnkgbWV0aG9kIHRvIGNv
cHkKKyAgICAgICAgYW4gZXhpc3RpbmcgRmxvYXRpbmdPYmplY3QgaW4gdGhlIGNhc2UgaXQgaXMg
b3Zlcmhhbmdpbmcgb3IgaW50cnVkaW5nCisgICAgICAgIGFuZCBuZWVkcyB0byBiZSBjb3BpZWQg
dG8gdGhlIGJsb2NrIHRoYXQgaXQgb3ZlcmhhbmdzIG9yIGludHJ1ZGVzCisgICAgICAgIGludG8u
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6dW5zYWZlQ2xvbmUpOiBSZW5hbWUg
dGhpcyBtZXRob2Qgc28gaXQgaXMKKyAgICAgICAgbW9yZSBvYnZpb3VzIHRoYXQgaXQgcmVhbGx5
IHNob3VsZG4ndCBiZSB1c2VkLCBhbmQgdG8gbWFrZSBpdCBtb3JlCisgICAgICAgIG9idmlvdXMg
dGhhdCBvbmUgc2hvdWxkIHVzZSB0aGUgY29weVRvTmV3Q29udGFpbmVyIG1ldGhvZCBmb3IgYWxs
CisgICAgICAgIG5vcm1hbCBGbG9hdGluZ09iamVjdCBjb3BpZXMuCisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdHM6OmNsZWFyKTogRGVsZXRlIGFsbCB0aGUgRmxvYXRpbmdPYmplY3Rz
IGluCisgICAgICAgIHRoZSBzZXQgYmVmb3JlIGNsZWFyaW5nIGl0LgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjptb3ZlQWxsVG9GbG9hdEluZm9NYXApOiBNb3ZlIGFsbCBvZiB0
aGUKKyAgICAgICAgRmxvYXRpbmdPYmplY3RzIGluIHRoZSBzZXQgdG8gYSBSZW5kZXJlclRvRmxv
YXRJbmZvTWFwLiBUaGlzIGlzIHVzZWQKKyAgICAgICAgaW4gUmVuZGVyQmxvY2tGbG93OjpjbGVh
ckZsb2F0cyB0byB3aGVuIGl0IGlzIHJlYWRkaW5nIGZsb2F0cyBhZnRlcgorICAgICAgICBjbGVh
cmluZyB0aGUgc2V0LgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjphZGQpOiBU
YWtlIGFuIE93blB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6cmVtb3Zl
KTogRGVsZXRlIHRoZSByZW1vdmVkIEZsb2F0aW5nT2JqZWN0LgorICAgICAgICAqIHJlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuaDogUmVtb3ZlIEZsb2F0aW5nT2JqZWN0OjpzZXRSZW5kZXJlcigp
LAorICAgICAgICBzaW5jZSB0aGUgUmVuZGVyQm94IG11c3QgYmUgc2V0IGluIHRoZSBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKTogUmVu
YW1lIGNsb25lCisgICAgICAgIHRvIHVuc2FmZUNsb25lLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cyk6IERvbid0IGRlbGV0ZSBhbnltb3JlLAor
ICAgICAgICBzaW5jZSBjbGVhciBkb2VzIGl0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6Omluc2VydEZsb2F0aW5nT2JqZWN0KTogSGFuZGxlIE93blB0ciBwcm9wZXJseS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdCk6IERvbid0IGRl
bGV0ZSBhbnltb3JlLAorICAgICAgICBzaW5jZSByZW1vdmUgZG9lcyBpdC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZE92ZXJoYW5naW5nRmxvYXRzKTogVXNl
IGNvcHlUb05ld0NvbnRhaW5lcgorICAgICAgICBhbmQgT3duUHRyLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyk6IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93OjpjbGVhckZsb2F0cyk6IFVzZSBleHBvcnRUb0Zsb2F0SW5mb01hcC4KKwogMjAxMy0w
OS0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQg
Zml4IGZvbGxvd2luZyA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvcjE1NDM1OD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggNDc5YTk5NjkwMmIw
NWQyYzExN2ZmMTMyN2I4NmZjNTNjNTI0OTdmZi4uYTE5MTQxYWU3MWM0MDBkYWU3NWY1NTBiOWZj
NWQ3Y2ViMDdlNDk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0
aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5jcHAKQEAgLTQyLDYgKzQyLDYzIEBAIHN0cnVjdCBTYW1lU2l6ZUFzRmxvYXRpbmdPYmpl
Y3QgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoRmxvYXRpbmdPYmplY3QpID09IHNpemVvZihT
YW1lU2l6ZUFzRmxvYXRpbmdPYmplY3QpLCBGbG9hdGluZ09iamVjdF9zaG91bGRfc3RheV9zbWFs
bCk7CiAKK0Zsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIHJlbmRlcmVy
KQorICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fb3JpZ2luYXRpbmdMaW5lKDAp
CisgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQorICAgICwgbV9zaG91bGRQYWludCh0cnVlKQor
ICAgICwgbV9pc0Rlc2NlbmRhbnQoZmFsc2UpCisgICAgLCBtX2lzUGxhY2VkKGZhbHNlKQorI2lm
bmRlZiBOREVCVUcKKyAgICAsIG1faXNJblBsYWNlZFRyZWUoZmFsc2UpCisjZW5kaWYKK3sKKyAg
ICBFRmxvYXQgdHlwZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5mbG9hdGluZygpOworICAgIEFTU0VS
VCh0eXBlICE9IE5vRmxvYXQpOworICAgIGlmICh0eXBlID09IExlZnRGbG9hdCkKKyAgICAgICAg
bV90eXBlID0gRmxvYXRMZWZ0OworICAgIGVsc2UgaWYgKHR5cGUgPT0gUmlnaHRGbG9hdCkKKyAg
ICAgICAgbV90eXBlID0gRmxvYXRSaWdodDsKK30KKworRmxvYXRpbmdPYmplY3Q6OkZsb2F0aW5n
T2JqZWN0KFJlbmRlckJveCogcmVuZGVyZXIsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0UmVjdCYg
ZnJhbWVSZWN0LCBib29sIHNob3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkKKyAgICA6IG1f
cmVuZGVyZXIocmVuZGVyZXIpCisgICAgLCBtX29yaWdpbmF0aW5nTGluZSgwKQorICAgICwgbV9m
cmFtZVJlY3QoZnJhbWVSZWN0KQorICAgICwgbV9wYWdpbmF0aW9uU3RydXQoMCkKKyAgICAsIG1f
dHlwZSh0eXBlKQorICAgICwgbV9zaG91bGRQYWludChzaG91bGRQYWludCkKKyAgICAsIG1faXNE
ZXNjZW5kYW50KGlzRGVzY2VuZGFudCkKKyAgICAsIG1faXNQbGFjZWQodHJ1ZSkKKyNpZm5kZWYg
TkRFQlVHCisgICAgLCBtX2lzSW5QbGFjZWRUcmVlKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK1Bh
c3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94
KiByZW5kZXJlcikKK3sKKyAgICBPd25QdHI8RmxvYXRpbmdPYmplY3Q+IG5ld09iaiA9IGFkb3B0
UHRyKG5ldyBGbG9hdGluZ09iamVjdChyZW5kZXJlcikpOworICAgIG5ld09iai0+c2V0U2hvdWxk
UGFpbnQoIXJlbmRlcmVyLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBl
eGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxz
ZSB3aWxsLgorICAgIG5ld09iai0+c2V0SXNEZXNjZW5kYW50KHRydWUpOworCisgICAgcmV0dXJu
IG5ld09iai5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0
aW5nT2JqZWN0Ojpjb3B5VG9OZXdDb250YWluZXIoTGF5b3V0U2l6ZSBvZmZzZXQsIGJvb2wgc2hv
dWxkUGFpbnQsIGJvb2wgaXNEZXNjZW5kYW50KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRmxvYXRpbmdPYmplY3QocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIHNob3VsZFBh
aW50LCBpc0Rlc2NlbmRhbnQpKTsKK30KKworUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gRmxv
YXRpbmdPYmplY3Q6OnVuc2FmZUNsb25lKCkgY29uc3QKK3sKKyAgICBPd25QdHI8RmxvYXRpbmdP
YmplY3Q+IGNsb25lT2JqZWN0ID0gYWRvcHRQdHIobmV3IEZsb2F0aW5nT2JqZWN0KHJlbmRlcmVy
KCksIHR5cGUoKSwgbV9mcmFtZVJlY3QsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KSk7
CisgICAgY2xvbmVPYmplY3QtPm1fb3JpZ2luYXRpbmdMaW5lID0gbV9vcmlnaW5hdGluZ0xpbmU7
CisgICAgY2xvbmVPYmplY3QtPm1fcGFnaW5hdGlvblN0cnV0ID0gbV9wYWdpbmF0aW9uU3RydXQ7
CisgICAgY2xvbmVPYmplY3QtPm1faXNQbGFjZWQgPSBtX2lzUGxhY2VkOworICAgIHJldHVybiBj
bG9uZU9iamVjdC5yZWxlYXNlKCk7Cit9CisKIHRlbXBsYXRlIDxGbG9hdGluZ09iamVjdDo6VHlw
ZSBGbG9hdFR5cGVWYWx1ZT4KIGNsYXNzIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXIgewogcHVi
bGljOgpAQCAtMTA3LDE1ICsxNjQsMjYgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNsZWFyTGlu
ZUJveFRyZWVQb2ludGVycygpCiAKIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjbGVhcigpCiB7Ci0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNhbGwgZGVsZXRlQWxsVmFsdWVzLCBleGNlcHQgY2xl
YXJGbG9hdHMKLSAgICAvLyBsaWtlIHRvIHBsYXkgZmFzdCBhbmQgbG9vc2Ugd2l0aCBvd25lcnNo
aXAgb2YgdGhlc2UgcG9pbnRlcnMuCi0gICAgLy8gSWYgd2UgbW92ZSB0byBPd25QdHIgdGhhdCB3
aWxsIGZpeCB0aGlzIG93bmVyc2hpcCBvZGRuZXNzLgorICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3Nl
dCk7CiAgICAgbV9zZXQuY2xlYXIoKTsKICAgICBtX3BsYWNlZEZsb2F0c1RyZWUuY2xlYXIoKTsK
ICAgICBtX2xlZnRPYmplY3RzQ291bnQgPSAwOwogICAgIG1fcmlnaHRPYmplY3RzQ291bnQgPSAw
OwogfQogCit2b2lkIEZsb2F0aW5nT2JqZWN0czo6bW92ZUFsbFRvRmxvYXRJbmZvTWFwKFJlbmRl
cmVyVG9GbG9hdEluZm9NYXAmIG1hcCkKK3sKKyAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9y
IGVuZCA9IG1fc2V0LmVuZCgpOworICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBp
dCA9IG1fc2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBGbG9hdGluZ09i
amVjdCogZiA9ICppdDsKKyAgICAgICAgbWFwLmFkZChmLT5yZW5kZXJlcigpLCBmKTsKKyAgICB9
CisgICAgLy8gY2xlYXIgc2V0IGJlZm9yZSBjbGVhcmluZyB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qg
d2FudCB0byBkZWxldGUgYWxsIG9mCisgICAgLy8gdGhlIG9iamVjdHMgd2UgaGF2ZSBqdXN0IHRy
YW5zZmVycmVkLgorICAgIG1fc2V0LmNsZWFyKCk7CisgICAgY2xlYXIoKTsKK30KKwogdm9pZCBG
bG9hdGluZ09iamVjdHM6OmluY3JlYXNlT2JqZWN0c0NvdW50KEZsb2F0aW5nT2JqZWN0OjpUeXBl
IHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCkKQEAg
LTE2NywxMiArMjM1LDE0IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmVQbGFjZWRPYmpl
Y3QoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogI2VuZGlmCiB9CiAKLXZvaWQgRmxv
YXRpbmdPYmplY3RzOjphZGQoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQorRmxvYXRp
bmdPYmplY3QqIEZsb2F0aW5nT2JqZWN0czo6YWRkKFBhc3NPd25QdHI8RmxvYXRpbmdPYmplY3Q+
IGZsb2F0aW5nT2JqZWN0KQogewotICAgIGluY3JlYXNlT2JqZWN0c0NvdW50KGZsb2F0aW5nT2Jq
ZWN0LT50eXBlKCkpOwotICAgIG1fc2V0LmFkZChmbG9hdGluZ09iamVjdCk7Ci0gICAgaWYgKGZs
b2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpKQotICAgICAgICBhZGRQbGFjZWRPYmplY3QoZmxvYXRp
bmdPYmplY3QpOworICAgIEZsb2F0aW5nT2JqZWN0KiBuZXdPYmplY3QgPSBmbG9hdGluZ09iamVj
dC5sZWFrUHRyKCk7CisgICAgaW5jcmVhc2VPYmplY3RzQ291bnQobmV3T2JqZWN0LT50eXBlKCkp
OworICAgIG1fc2V0LmFkZChuZXdPYmplY3QpOworICAgIGlmIChuZXdPYmplY3QtPmlzUGxhY2Vk
KCkpCisgICAgICAgIGFkZFBsYWNlZE9iamVjdChuZXdPYmplY3QpOworICAgIHJldHVybiBuZXdP
YmplY3Q7CiB9CiAKIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmUoRmxvYXRpbmdPYmplY3Qq
IGZsb2F0aW5nT2JqZWN0KQpAQCAtMTgyLDYgKzI1Miw4IEBAIHZvaWQgRmxvYXRpbmdPYmplY3Rz
OjpyZW1vdmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogICAgIEFTU0VSVChmbG9h
dGluZ09iamVjdC0+aXNQbGFjZWQoKSB8fCAhZmxvYXRpbmdPYmplY3QtPmlzSW5QbGFjZWRUcmVl
KCkpOwogICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKICAgICAgICAgcmVtb3Zl
UGxhY2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBBU1NFUlQoIWZsb2F0aW5nT2JqZWN0
LT5vcmlnaW5hdGluZ0xpbmUoKSk7CisgICAgZGVsZXRlIGZsb2F0aW5nT2JqZWN0OwogfQogCiB2
b2lkIEZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCmluZGV4IDMxZTYzZmQxYTA1YzVlNDBk
M2VjNzI2ZTlhM2NmMGZjMGQwM2VmZjQuLjI5NmM3ZDYxZWUwM2E2NzY1ZjljMjBiMGRhYWJmODQ3
ZGJjYTkwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIKICNpbmNsdWRl
ICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDUwICs0Miwx
MSBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IFR5cGUgdXNlcyBiaXRzIHNvIHlvdSBjYW4g
dXNlIEZsb2F0TGVmdFJpZ2h0IGFzIGEgbWFzayB0byBxdWVyeSBmb3IgYm90aCBsZWZ0IGFuZCBy
aWdodC4KICAgICBlbnVtIFR5cGUgeyBGbG9hdExlZnQgPSAxLCBGbG9hdFJpZ2h0ID0gMiwgRmxv
YXRMZWZ0UmlnaHQgPSAzIH07CiAKLSAgICBleHBsaWNpdCBGbG9hdGluZ09iamVjdChFRmxvYXQg
dHlwZSkKLSAgICAgICAgOiBtX3JlbmRlcmVyKDApCi0gICAgICAgICwgbV9vcmlnaW5hdGluZ0xp
bmUoMCkKLSAgICAgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQotICAgICAgICAsIG1fc2hvdWxk
UGFpbnQodHJ1ZSkKLSAgICAgICAgLCBtX2lzRGVzY2VuZGFudChmYWxzZSkKLSAgICAgICAgLCBt
X2lzUGxhY2VkKGZhbHNlKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX2lzSW5QbGFjZWRU
cmVlKGZhbHNlKQotI2VuZGlmCi0gICAgewotICAgICAgICBBU1NFUlQodHlwZSAhPSBOb0Zsb2F0
KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gTGVmdEZsb2F0KQotICAgICAgICAgICAgbV90eXBlID0g
RmxvYXRMZWZ0OwotICAgICAgICBlbHNlIGlmICh0eXBlID09IFJpZ2h0RmxvYXQpCi0gICAgICAg
ICAgICBtX3R5cGUgPSBGbG9hdFJpZ2h0OwotICAgIH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxG
bG9hdGluZ09iamVjdD4gY3JlYXRlKFJlbmRlckJveCopOwogCi0gICAgRmxvYXRpbmdPYmplY3Qo
VHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QpCi0gICAgICAgIDogbV9yZW5k
ZXJlcigwKQotICAgICAgICAsIG1fb3JpZ2luYXRpbmdMaW5lKDApCi0gICAgICAgICwgbV9mcmFt
ZVJlY3QoZnJhbWVSZWN0KQotICAgICAgICAsIG1fcGFnaW5hdGlvblN0cnV0KDApCi0gICAgICAg
ICwgbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9zaG91bGRQYWludCh0cnVlKQotICAgICAgICAs
IG1faXNEZXNjZW5kYW50KGZhbHNlKQotICAgICAgICAsIG1faXNQbGFjZWQodHJ1ZSkKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKLSNlbmRpZgotICAg
IHsKLSAgICB9CisgICAgUGFzc093blB0cjxGbG9hdGluZ09iamVjdD4gY29weVRvTmV3Q29udGFp
bmVyKExheW91dFNpemUsIGJvb2wgc2hvdWxkUGFpbnQgPSBmYWxzZSwgYm9vbCBpc0Rlc2NlbmRh
bnQgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICBGbG9hdGluZ09iamVjdCogY2xvbmUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgRmxvYXRpbmdPYmplY3QqIGNsb25lT2JqZWN0ID0gbmV3IEZsb2F0aW5n
T2JqZWN0KHR5cGUoKSwgbV9mcmFtZVJlY3QpOwotICAgICAgICBjbG9uZU9iamVjdC0+bV9yZW5k
ZXJlciA9IG1fcmVuZGVyZXI7Ci0gICAgICAgIGNsb25lT2JqZWN0LT5tX29yaWdpbmF0aW5nTGlu
ZSA9IG1fb3JpZ2luYXRpbmdMaW5lOwotICAgICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9u
U3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1fc2hvdWxk
UGFpbnQgPSBtX3Nob3VsZFBhaW50OwotICAgICAgICBjbG9uZU9iamVjdC0+bV9pc0Rlc2NlbmRh
bnQgPSBtX2lzRGVzY2VuZGFudDsKLSAgICAgICAgY2xvbmVPYmplY3QtPm1faXNQbGFjZWQgPSBt
X2lzUGxhY2VkOwotICAgICAgICByZXR1cm4gY2xvbmVPYmplY3Q7Ci0gICAgfQorICAgIFBhc3NP
d25QdHI8RmxvYXRpbmdPYmplY3Q+IHVuc2FmZUNsb25lKCkgY29uc3Q7CiAKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAgICAgUmVu
ZGVyQm94KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KQEAgLTEyMSw3
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzRGVzY2VuZGFudChib29sIGlzRGVzY2Vu
ZGFudCkgeyBtX2lzRGVzY2VuZGFudCA9IGlzRGVzY2VuZGFudDsgfQogCiAgICAgLy8gRklYTUU6
IENhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBhcmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQgYmUgd2hp
dGVsaXN0ZWQgZXhwbGljaXRseSBvciByZW1vdmVkLgotICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVu
ZGVyQm94KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KICAgICBSb290SW5s
aW5lQm94KiBvcmlnaW5hdGluZ0xpbmUoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmF0aW5nTGlu
ZTsgfQogICAgIHZvaWQgc2V0T3JpZ2luYXRpbmdMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmUpIHsg
bV9vcmlnaW5hdGluZ0xpbmUgPSBsaW5lOyB9CiAKQEAgLTE2Niw2ICsxMjcsOSBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IEZsb2F0aW5nT2JqZWN0KFJlbmRlckJv
eCopOworICAgIEZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCosIFR5cGUsIGNvbnN0IExheW91dFJl
Y3QmLCBib29sIHNob3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCk7CisKICAgICBSZW5kZXJC
b3gqIG1fcmVuZGVyZXI7CiAgICAgUm9vdElubGluZUJveCogbV9vcmlnaW5hdGluZ0xpbmU7CiAg
ICAgTGF5b3V0UmVjdCBtX2ZyYW1lUmVjdDsKQEAgLTE5NCw3ICsxNTgsNyBAQCB0eXBlZGVmIEZs
b2F0aW5nT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9y
OwogdHlwZWRlZiBQT0RJbnRlcnZhbDxpbnQsIEZsb2F0aW5nT2JqZWN0Kj4gRmxvYXRpbmdPYmpl
Y3RJbnRlcnZhbDsKIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGludCwgRmxvYXRpbmdPYmplY3Qq
PiBGbG9hdGluZ09iamVjdFRyZWU7CiB0eXBlZGVmIFBPREZyZWVMaXN0QXJlbmE8UE9EUmVkQmxh
Y2tUcmVlPEZsb2F0aW5nT2JqZWN0SW50ZXJ2YWw+OjpOb2RlPiBJbnRlcnZhbEFyZW5hOwotCit0
eXBlZGVmIEhhc2hNYXA8UmVuZGVyQm94KiwgRmxvYXRpbmdPYmplY3QqPiBSZW5kZXJlclRvRmxv
YXRJbmZvTWFwOwogCiBjbGFzcyBGbG9hdGluZ09iamVjdHMgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZsb2F0aW5nT2JqZWN0cyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjAz
LDcgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICB+RmxvYXRpbmdPYmplY3RzKCk7CiAKICAgICB2b2lk
IGNsZWFyKCk7Ci0gICAgdm9pZCBhZGQoRmxvYXRpbmdPYmplY3QqKTsKKyAgICB2b2lkIG1vdmVB
bGxUb0Zsb2F0SW5mb01hcChSZW5kZXJlclRvRmxvYXRJbmZvTWFwJik7CisgICAgRmxvYXRpbmdP
YmplY3QqIGFkZChQYXNzT3duUHRyPEZsb2F0aW5nT2JqZWN0Pik7CiAgICAgdm9pZCByZW1vdmUo
RmxvYXRpbmdPYmplY3QqKTsKICAgICB2b2lkIGFkZFBsYWNlZE9iamVjdChGbG9hdGluZ09iamVj
dCopOwogICAgIHZvaWQgcmVtb3ZlUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMDkxYjQzMTlmYzNjNTY2
YzY1YmNjZmRhMTdmMjAzNGRjZWU2NTExLi41Y2RmOTViZWRhOGYzYzFkZWQ1NDAxNWY5NWFiOTRi
ZTBmZWYyNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTExNDgsNyArMTE0OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6Om1vdmVBbGxDaGlsZHJlbkluY2x1
ZGluZ0Zsb2F0c1RvKFJlbmRlckJsb2NrKiB0b0Jsb2NrLCBib29sIGZ1CiAgICAgICAgICAgICBp
ZiAodG9CbG9jay0+Y29udGFpbnNGbG9hdChmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHRvQmxvY2stPm1fZmxvYXRp
bmdPYmplY3RzLT5hZGQoZmxvYXRpbmdPYmplY3QtPmNsb25lKCkpOworICAgICAgICAgICAgdG9C
bG9jay0+bV9mbG9hdGluZ09iamVjdHMtPmFkZChmbG9hdGluZ09iamVjdC0+dW5zYWZlQ2xvbmUo
KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMjYwLDcgKzMyNjAsNiBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQogICAgIGlmICghbV9mbG9hdGluZ09iamVj
dHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nT2Jq
ZWN0cy0+c2V0KCkpOwogICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwogfQogCkBAIC0z
MjgxLDcgKzMyODAsNyBAQCBGbG9hdGluZ09iamVjdCogUmVuZGVyQmxvY2s6Omluc2VydEZsb2F0
aW5nT2JqZWN0KFJlbmRlckJveCogbykKIAogICAgIC8vIENyZWF0ZSB0aGUgc3BlY2lhbCBvYmpl
Y3QgZW50cnkgJiBhcHBlbmQgaXQgdG8gdGhlIGxpc3QKIAotICAgIEZsb2F0aW5nT2JqZWN0KiBu
ZXdPYmogPSBuZXcgRmxvYXRpbmdPYmplY3Qoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSk7CisgICAg
T3duUHRyPEZsb2F0aW5nT2JqZWN0PiBuZXdPYmogPSBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKG8p
OwogICAgIAogICAgIC8vIE91ciBsb2NhdGlvbiBpcyBpcnJlbGV2YW50IGlmIHdlJ3JlIHVuc3Bs
aXR0YWJsZSBvciBubyBwYWdpbmF0aW9uIGlzIGluIGVmZmVjdC4KICAgICAvLyBKdXN0IGdvIGFo
ZWFkIGFuZCBsYXkgb3V0IHRoZSBmbG9hdC4KQEAgLTMzMDQsMTMgKzMzMDMsNyBAQCBGbG9hdGlu
Z09iamVjdCogUmVuZGVyQmxvY2s6Omluc2VydEZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCogbykK
ICAgICAgICAgc2hhcGVPdXRzaWRlLT5zZXRTaGFwZVNpemUobG9naWNhbFdpZHRoRm9yQ2hpbGQo
byksIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChvKSk7CiAjZW5kaWYKIAotICAgIG5ld09iai0+c2V0
U2hvdWxkUGFpbnQoIW8tPmhhc1NlbGZQYWludGluZ0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4
aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRzZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNl
IHdpbGwuCi0gICAgbmV3T2JqLT5zZXRJc0Rlc2NlbmRhbnQodHJ1ZSk7Ci0gICAgbmV3T2JqLT5z
ZXRSZW5kZXJlcihvKTsKLQotICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQobmV3T2JqKTsKLSAg
ICAKLSAgICByZXR1cm4gbmV3T2JqOworICAgIHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRk
KG5ld09iai5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGlu
Z09iamVjdChSZW5kZXJCb3gqIG8pCkBAIC0zMzQ1LDggKzMzMzgsNiBAQCB2b2lkIFJlbmRlckJs
b2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCiAgICAgICAgICAgICAgICAg
bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoMCwgbG9naWNhbEJvdHRvbSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlKHIpOwotICAgICAgICAg
ICAgQVNTRVJUKCFyLT5vcmlnaW5hdGluZ0xpbmUoKSk7Ci0gICAgICAgICAgICBkZWxldGUgcjsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTMzNjAsOCArMzM1MSw2IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0JlbG93KEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQs
IGludCBsb2dpCiAgICAgRmxvYXRpbmdPYmplY3QqIGN1cnIgPSBmbG9hdGluZ09iamVjdFNldC5s
YXN0KCk7CiAgICAgd2hpbGUgKGN1cnIgIT0gbGFzdEZsb2F0ICYmICghY3Vyci0+aXNQbGFjZWQo
KSB8fCBjdXJyLT5sb2dpY2FsVG9wKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpID49IGxvZ2lj
YWxPZmZzZXQpKSB7CiAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5yZW1vdmUoY3Vycik7Ci0g
ICAgICAgIEFTU0VSVCghY3Vyci0+b3JpZ2luYXRpbmdMaW5lKCkpOwotICAgICAgICBkZWxldGUg
Y3VycjsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0U2V0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjdXJyID0gZmxvYXRpbmdPYmplY3RTZXQubGFzdCgpOwpAQCAt
MzgyOSwyNCArMzgxOCwyMSBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphZGRPdmVyaGFuZ2lu
Z0Zsb2F0cyhSZW5kZXJCbG9jayogY2hpbGQsIGJvb2wgbWFrZUNoaWxkUAogICAgICAgICAgICAg
Ly8gSWYgdGhlIG9iamVjdCBpcyBub3QgaW4gdGhlIGxpc3QsIHdlIGFkZCBpdCBub3cuCiAgICAg
ICAgICAgICBpZiAoIWNvbnRhaW5zRmxvYXQoci0+cmVuZGVyZXIoKSkpIHsKICAgICAgICAgICAg
ICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBMYXlv
dXRTaXplKC1jaGlsZExvZ2ljYWxMZWZ0LCAtY2hpbGRMb2dpY2FsVG9wKSA6IExheW91dFNpemUo
LWNoaWxkTG9naWNhbFRvcCwgLWNoaWxkTG9naWNhbExlZnQpOwotICAgICAgICAgICAgICAgIEZs
b2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iaiA9IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCks
IExheW91dFJlY3Qoci0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKSAtIG9mZnNldCwgci0+ZnJhbWVS
ZWN0KCkuc2l6ZSgpKSk7Ci0gICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldFJlbmRlcmVy
KHItPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnQgPSBmYWxz
ZTsKIAogICAgICAgICAgICAgICAgIC8vIFRoZSBuZWFyZXN0IGVuY2xvc2luZyBsYXllciBhbHdh
eXMgcGFpbnRzIHRoZSBmbG9hdCAoc28gdGhhdCB6aW5kZXggYW5kIHN0YWNraW5nCiAgICAgICAg
ICAgICAgICAgLy8gYmVoYXZlcyBwcm9wZXJseSkuICBXZSBhbHdheXMgd2FudCB0byBwcm9wYWdh
dGUgdGhlIGRlc2lyZSB0byBwYWludCB0aGUgZmxvYXQgYXMKICAgICAgICAgICAgICAgICAvLyBm
YXIgb3V0IGFzIHdlIGNhbiwgdG8gdGhlIG91dGVybW9zdCBibG9jayB0aGF0IG92ZXJsYXBzIHRo
ZSBmbG9hdCwgc3RvcHBpbmcgb25seQogICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhpdCBhIHNl
bGYtcGFpbnRpbmcgbGF5ZXIgYm91bmRhcnkuCi0gICAgICAgICAgICAgICAgaWYgKHItPnJlbmRl
cmVyKCktPmVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpID09IGVuY2xvc2luZ0Zsb2F0UGFp
bnRpbmdMYXllcigpKQorICAgICAgICAgICAgICAgIGlmIChyLT5yZW5kZXJlcigpLT5lbmNsb3Np
bmdGbG9hdFBhaW50aW5nTGF5ZXIoKSA9PSBlbmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSkg
ewogICAgICAgICAgICAgICAgICAgICByLT5zZXRTaG91bGRQYWludChmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0U2hvdWxk
UGFpbnQoZmFsc2UpOwotCi0gICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPnNldElzRGVzY2Vu
ZGFudCh0cnVlKTsKLQorICAgICAgICAgICAgICAgICAgICBzaG91bGRQYWludCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZSB0aGUgZmxvYXRp
bmcgb2JqZWN0IGxpc3QgbGF6aWx5LgogICAgICAgICAgICAgICAgIGlmICghbV9mbG9hdGluZ09i
amVjdHMpCiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpOwotICAg
ICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoZmxvYXRpbmdPYmopOworCisgICAg
ICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmFkZChyLT5jb3B5VG9OZXdDb250YWluZXIo
b2Zmc2V0LCBzaG91bGRQYWludCwgdHJ1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMgJiYgIXItPnNo
b3VsZFBhaW50KCkgJiYgIXItPnJlbmRlcmVyKCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkKQEAg
LTM4OTcsMjggKzM4ODMsMjAgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkSW50cnVkaW5nRmxvYXRz
KFJlbmRlckJsb2NrKiBwcmV2LCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0T2YKICAgICAgICAgRmxv
YXRpbmdPYmplY3QqIHIgPSAqcHJldkl0OwogICAgICAgICBpZiAoci0+bG9naWNhbEJvdHRvbShp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKSA+IGxvZ2ljYWxUb3BPZmZzZXQpIHsKICAgICAgICAg
ICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMgfHwgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5j
b250YWlucyhyKSkgewotICAgICAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFNpemUobG9naWNhbExlZnRPZmZzZXQsIGxvZ2lj
YWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShsb2dpY2FsVG9wT2Zmc2V0LCBsb2dpY2FsTGVmdE9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqID0gbmV3
IEZsb2F0aW5nT2JqZWN0KHItPnR5cGUoKSwgTGF5b3V0UmVjdChyLT5mcmFtZVJlY3QoKS5sb2Nh
dGlvbigpIC0gb2Zmc2V0LCByLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsKKyAgICAgICAgICAgICAg
ICAvLyBXZSBjcmVhdGUgdGhlIGZsb2F0aW5nIG9iamVjdCBsaXN0IGxhemlseS4KKyAgICAgICAg
ICAgICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKQorICAgICAgICAgICAgICAgICAgICBjcmVh
dGVGbG9hdGluZ09iamVjdHMoKTsKIAogICAgICAgICAgICAgICAgIC8vIEFwcGx5aW5nIHRoZSBj
aGlsZCdzIG1hcmdpbiBtYWtlcyBubyBzZW5zZSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2hpbGQg
d2FzIHBhc3NlZCBpbi4KICAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGlzIG1hcmdpbiB3YXMg
YWRkZWQgYWxyZWFkeSB0aHJvdWdoIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHxsb2dpY2FsTGVm
dE9mZnNldHwgdmFyaWFibGUKICAgICAgICAgICAgICAgICAvLyBhYm92ZS4gIHxsb2dpY2FsTGVm
dE9mZnNldHwgd2lsbCBlcXVhbCB0aGUgbWFyZ2luIGluIHRoaXMgY2FzZSwgc28gaXQncyBhbHJl
YWR5IGJlZW4gdGFrZW4KICAgICAgICAgICAgICAgICAvLyBpbnRvIGFjY291bnQuICBPbmx5IGFw
cGx5IHRoaXMgY29kZSBpZiBwcmV2IGlzIHRoZSBwYXJlbnQsIHNpbmNlIG90aGVyd2lzZSB0aGUg
bGVmdCBtYXJnaW4KICAgICAgICAgICAgICAgICAvLyB3aWxsIGdldCBhcHBsaWVkIHR3aWNlLgot
ICAgICAgICAgICAgICAgIGlmIChwcmV2ICE9IHBhcmVudCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXRpbmdPYmotPnNldFgoZmxvYXRpbmdPYmotPngoKSArIHByZXYtPm1hcmdpbkxlZnQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0aW5nT2JqLT5zZXRZKGZsb2F0aW5nT2JqLT55KCkgKyBwcmV2LT5tYXJnaW5Ub3AoKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZmxvYXRp
bmdPYmotPnNldFNob3VsZFBhaW50KGZhbHNlKTsgLy8gV2UgYXJlIG5vdCBpbiB0aGUgZGlyZWN0
IGluaGVyaXRhbmNlIGNoYWluIGZvciB0aGlzIGZsb2F0LiBXZSB3aWxsIG5ldmVyIHBhaW50IGl0
LgotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRSZW5kZXJlcihyLT5yZW5kZXJlcigp
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIGZs
b2F0aW5nIG9iamVjdCBsaXN0IGxhemlseS4KLSAgICAgICAgICAgICAgICBpZiAoIW1fZmxvYXRp
bmdPYmplY3RzKQotICAgICAgICAgICAgICAgICAgICBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsK
LSAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKGZsb2F0aW5nT2JqKTsKKyAg
ICAgICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkKKyAgICAgICAgICAgICAgICAgICAgPyBMYXlvdXRTaXplKGxvZ2ljYWxMZWZ0T2Zmc2V0ICsg
KHByZXYgIT0gcGFyZW50KCkgPyBwcmV2LT5tYXJnaW5MZWZ0KCkgOiBMYXlvdXRVbml0KCkpLCBs
b2dpY2FsVG9wT2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICA6IExheW91dFNpemUobG9naWNh
bFRvcE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQgKyAocHJldiAhPSBwYXJlbnQoKSA/IHByZXYt
Pm1hcmdpblRvcCgpIDogTGF5b3V0VW5pdCgpKSk7CisKKyAgICAgICAgICAgICAgICBtX2Zsb2F0
aW5nT2JqZWN0cy0+YWRkKHItPmNvcHlUb05ld0NvbnRhaW5lcihvZmZzZXQpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKaW5kZXggMWQ3NWM5MTU2MDE3YTBhM2E5YjdhMTg1MzIwNzUzN2EyNzkz
N2YwYS4uZWY1ODcwOGFlYTdiMWU1YjdmOTRiMzliMzk0ZDljYmMyN2M4OWE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTEwMyw3ICsxMDMs
NiBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xlYXJGbG9hdHMoKQogICAgIC8vIElubGluZSBi
bG9ja3MgYXJlIGNvdmVyZWQgYnkgdGhlIGlzUmVwbGFjZWQoKSBjaGVjayBpbiB0aGUgYXZvaWRG
bG9hdHMgbWV0aG9kLgogICAgIGlmIChhdm9pZHNGbG9hdHMoKSB8fCBpc1Jvb3QoKSB8fCBpc1Jl
bmRlclZpZXcoKSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNUYWJs
ZUNlbGwoKSkgewogICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMpIHsKLSAgICAgICAgICAg
IGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkpOwogICAgICAgICAgICAg
bV9mbG9hdGluZ09iamVjdHMtPmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvbGRJ
bnRydWRpbmdGbG9hdFNldC5pc0VtcHR5KCkpCkBAIC0xMTEsMjAgKzExMCwxMyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6Y2xlYXJGbG9hdHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIEZsb2F0aW5nT2JqZWN0Kj4gUmVuZGVy
ZXJUb0Zsb2F0SW5mb01hcDsKICAgICBSZW5kZXJlclRvRmxvYXRJbmZvTWFwIGZsb2F0TWFwOwog
CiAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7Ci0gICAgICAgIGNvbnN0IEZsb2F0aW5nT2Jq
ZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKLSAg
ICAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0
U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7Ci0gICAgICAgICAgICBm
b3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCog
ZiA9ICppdDsKLSAgICAgICAgICAgICAgICBmbG9hdE1hcC5hZGQoZi0+cmVuZGVyZXIoKSwgZik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZGVsZXRlQWxsVmFs
dWVzKGZsb2F0aW5nT2JqZWN0U2V0KTsKLSAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmNsZWFy
KCk7CisgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKQorICAgICAgICAgICAgbV9mbG9hdGlu
Z09iamVjdHMtPm1vdmVBbGxUb0Zsb2F0SW5mb01hcChmbG9hdE1hcCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5jbGVhcigpOwogICAgIH0KIAogICAgIC8v
IFdlIHNob3VsZCBub3QgcHJvY2VzcyBmbG9hdHMgaWYgdGhlIHBhcmVudCBub2RlIGlzIG5vdCBh
IFJlbmRlckJsb2NrLiBPdGhlcndpc2UsIHdlIHdpbGwgYWRkIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>