<?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>24624</bug_id>
          
          <creation_ts>2009-03-16 10:19:10 -0700</creation_ts>
          <short_desc>Crash in imageLoadEventTimerFired after adoptNode used on &lt;img&gt;, seen with inspector, which uses adoptNode</short_desc>
          <delta_ts>2009-03-17 10:24:12 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113891</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-16 10:19:10 -0700</bug_when>
    <thetext>1) open attached http://help.apple.com/iphone/guide/desktop.html in safari
2) show web inspector
3) enable JS debugger
4) reload one or more times

Crash happens in imageLoadEventTimerFired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113892</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-16 10:19:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/6422850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113893</commentid>
    <comment_count>2</comment_count>
      <attachid>28652</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-16 10:32:45 -0700</bug_when>
    <thetext>Created attachment 28652
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113909</commentid>
    <comment_count>3</comment_count>
      <attachid>28656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-16 12:54:26 -0700</bug_when>
    <thetext>Created attachment 28656
patch, this time with a regression test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114010</commentid>
    <comment_count>4</comment_count>
      <attachid>28656</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-17 01:46:45 -0700</bug_when>
    <thetext>Comment on attachment 28656
patch, this time with a regression test

+        member functions. Got rid of pointless boolean bit fields that don&apos;t make the
+        object any smaller, since 3 bits and 3 bytes both cost 4 bytes.

On PowerPC, bool is still 4 bytes - I don&apos;t think that we should regress PPC, especially when that&apos;s easy to avoid.

+    m_dispatchingList = m_dispatchSoonList;
+    m_dispatchSoonList.clear();

A swap would be more efficient than copying.

Index: LayoutTests/fast/dom/HTMLImageElement/resources/image-load-subframe.html
===================================================================
--- LayoutTests/fast/dom/HTMLImageElement/resources/image-load-subframe.html	(revision 0)
+++ LayoutTests/fast/dom/HTMLImageElement/resources/image-load-subframe.html	(revision 0)
@@ -0,0 +1 @@
+&lt;body&gt;&lt;img src=&quot;blue_rect.jpg&quot;&gt;&lt;/body&gt;

With a data: URL, the test should be easier to read. It isn&apos;t great that a failure in this test is detected as a crash in another one.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114029</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-17 08:58:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; On PowerPC, bool is still 4 bytes - I don&apos;t think that we should regress PPC,
&gt; especially when that&apos;s easy to avoid.

Really? I didn&apos;t know that. I had asked about this earlier but I guess it was in person, not on an email list.

&gt; +    m_dispatchingList = m_dispatchSoonList;
&gt; +    m_dispatchSoonList.clear();
&gt; 
&gt; A swap would be more efficient than copying.

Sure, I&apos;ll do that.

&gt; With a data: URL, the test should be easier to read. It isn&apos;t great that a
&gt; failure in this test is detected as a crash in another one.

I was unable to make the test that crashed with the old code with a data URL. I tried for days.

I was unable to make a test that would crash within the test. Adding code to wait for the image to load (and hence to wait for the crash) made the bug go away. I&apos;d be happy to improve the test, but I was unable to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114035</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-17 09:47:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I was unable to make the test that crashed with the old code with a data URL.

The difficulty was primarily because the data URL didn&apos;t have permission to load an image that wasn&apos;t also a data URL. Maybe someone else can figure out the trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114038</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-17 10:06:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/projects/webkit/changeset/41766</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114041</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-17 10:10:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Really? I didn&apos;t know that. I had asked about this earlier but I guess it was
&gt; in person, not on an email list.

I made a test program that printed sizeof(bool), and it was 4 bytes (12 bytes for a struct with three of those). But perhaps WebKit uses some build setting that changes the default?

(In reply to comment #6)
&gt; The difficulty was primarily because the data URL didn&apos;t have permission to
&gt; load an image that wasn&apos;t also a data URL. Maybe someone else can figure out
&gt; the trick.

One possible trick is to use javascript:&apos;&apos; URLs, which share security origin with the opener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114051</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-17 10:24:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; The difficulty was primarily because the data URL didn&apos;t have permission to
&gt; &gt; load an image that wasn&apos;t also a data URL. Maybe someone else can figure out
&gt; &gt; the trick.
&gt; 
&gt; One possible trick is to use javascript:&apos;&apos; URLs, which share security origin
&gt; with the opener.

I&apos;m not going to spend more time on this now, but I&apos;ll keep that in mind next time I need to test something like this or if I decided to come back and refine this test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28652</attachid>
            <date>2009-03-16 10:32:45 -0700</date>
            <delta_ts>2009-03-16 12:54:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ImageLoadAdoptNodePatch.txt</filename>
            <type>text/plain</type>
            <size>20940</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTczNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMDktMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDYyNDogQ3Jhc2ggaW4gaW1hZ2VMb2FkRXZlbnRUaW1lckZpcmVkIGFmdGVyIGFkb3B0Tm9kZSB1
c2VkIG9uIDxpbWc+LAorICAgICAgICBzZWVuIHdpdGggaW5zcGVjdG9yLCB3aGljaCB1c2VzIGFk
b3B0Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQ2MjQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNjQyMjg1MAorCisgICAgICAgIEkgZ2F2ZSB1
cCBvbiB0cnlpbmcgdG8gbWFrZSBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhpcyBhZnRlciB0cnlp
bmcgZm9yIG1hbnkKKyAgICAgICAgaG91cnMgb3ZlciBhIGNvdXBsZSBvZiBkYXlzLiBJdCBzaG91
bGQgYmUgcG9zc2libGUgdG8gcmVwcm9kdWNlIHRoaXMgYnkgdXNpbmcKKyAgICAgICAgYWRvcHRO
b2RlIGFuZCBnZXR0aW5nIHRoZSBpbWFnZSBsb2FkaW5nIHRpbWVkIGp1c3QgcmlnaHQsIGJ1dCBJ
IHdhc24ndCBhYmxlCisgICAgICAgIHRvIG1ha2Ugc29tZXRoaW5nIHRoYXQgd29ya2VkIHJlbGlh
Ymx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6IFJlbW92ZWQgbV9pbWFnZUxvYWRFdmVudFRpbWVyLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldGFjaCk6IFJlbW92ZWQgbV9pbWFnZUxvYWRFdmVudERp
c3BhdGNoU29vbkxpc3QgYW5kCisgICAgICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaGluZ0xp
c3QuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IENhbGxlZCBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cworICAgICAgICBpbnN0ZWFkIG9m
IGRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRzTm93LgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
IFJlbW92ZWQgSW1hZ2VMb2FkZXIsIGRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRTb29uLAorICAgICAg
ICBkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdywgcmVtb3ZlSW1hZ2UsIG1faW1hZ2VMb2FkRXZl
bnREaXNwYXRjaFNvb25MaXN0LAorICAgICAgICBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdM
aXN0LCBtX2ltYWdlTG9hZEV2ZW50VGltZXIsIGFuZCBpbWFnZUxvYWRFdmVudFRpbWVyRmlyZWQu
CisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9hZEV2ZW50U2VuZGVyKTogQWRkZWQuIFJldHVybnMgdGhlIHNpbmdsZSBnbG9iYWwgSW1hZ2VM
b2FkRXZlbnRTZW5kZXIKKyAgICAgICAgb2JqZWN0IHVzZWQgcHJpdmF0ZWx5IGFzIHRoZSB0YXJn
ZXQgb2YgdGhlIGxvYWQgZXZlbnQgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRl
cjo6fkltYWdlTG9hZGVyKTogQ2FsbCBJbWFnZUxvYWRFdmVudFNlbmRlcjo6Y2FuY2VsTG9hZEV2
ZW50CisgICAgICAgIHJhdGhlciB0aGFuIERvY3VtZW50OjpyZW1vdmVJbWFnZS4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTG9hZGVyOjpzZXRJbWFnZSk6IFVzZSBtX2VsZW1lbnQgZGlyZWN0bHks
IG5vdCBlbGVtZW50KCkuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJv
bUVsZW1lbnQpOiBEaXR0by4gQWxzbyBuYW1lIHRoZSBsb2NhbCB2YXJpYWJsZQorICAgICAgICBk
b2N1bWVudCBpbnN0ZWFkIG9mIGRvYy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6IENhbGwgSW1hZ2VMb2FkRXZlbnRTZW5kZXI6OmRpc3BhdGNoTG9hZEV2
ZW50U29vbgorICAgICAgICByYXRoZXIgdGhhbiBEb2N1bWVudDo6ZGlzcGF0Y2hJbWFnZUxvYWRF
dmVudFNvb24uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5n
TG9hZEV2ZW50KTogQWRkZWQuIEhhbmRsZXMgdGhlIGNvbW1vbiBsb2dpYworICAgICAgICBhYm91
dCB3aGVuIGxvYWQgZXZlbnRzIGNhbiBiZSBkaXNwYXRjaGVkIHNvIHRoYXQgZGlzcGF0Y2hMb2Fk
RXZlbnQgb25seSBoYXMgdG8KKyAgICAgICAgaGF2ZSB0aGUgc3BlY2lmaWMgcGFydCBmb3IgZWFj
aCBkZXJpdmVkIGNsYXNzLiBUaGlzIGluY2x1ZGVzIGEgY2hlY2sgdGhhdCB0aGUKKyAgICAgICAg
ZG9jdW1lbnQgaXMgYXR0YWNoZWQsIHdoaWNoIHVzZWQgdG8gYmUgaGFuZGxlZCBieSBoYXZpbmcg
ZG9jdW1lbnRzIGVtcHR5IG91dCB0aGUKKyAgICAgICAgaW1hZ2UgbG9hZCBldmVudCB2ZWN0b3Jz
IGluIHRoZSBkZXRhY2ggZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6
ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6IEFkZGVkLiBDYWxscyB0aGUgYXBwcm9wcmlhdGUK
KyAgICAgICAgZnVuY3Rpb24gb24gdGhlIEltYWdlTG9hZEV2ZW50U2VuZGVyLCB3aGljaCBhdm9p
ZHMgdGhlIG5lZWQgdG8gaGF2ZSB0aGF0IGNsYXNzIGJlCisgICAgICAgIHB1YmxpYyBpbiB0aGUg
SW1hZ2VMb2FkZXIgaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkRXZlbnRTZW5k
ZXI6OkltYWdlTG9hZEV2ZW50U2VuZGVyKTogQWRkZWQuIEhhcyB0aGUgY29kZSB0aGF0CisgICAg
ICAgIHdhcyBwcmV2aW91c2x5IGluIHRoZSBEb2N1bWVudCBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTG9hZEV2ZW50U2VuZGVyOjpkaXNwYXRjaExvYWRFdmVudFNvb24pOiBB
ZGRlZC4gSGFzIHRoZSBjb2RlIHRoYXQKKyAgICAgICAgd2FzIHByZXZpb3VzbHkgaW4gRG9jdW1l
bnQ6OmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRTb29uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VM
b2FkRXZlbnRTZW5kZXI6OmNhbmNlbExvYWRFdmVudCk6IEFkZGVkLiBIYXMgdGhlIGNvZGUgdGhh
dCB3YXMKKyAgICAgICAgcHJldmlvdXNseSBpbiBEb2N1bWVudDo6cmVtb3ZlSW1hZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRFdmVudFNlbmRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2
ZW50cyk6IEFkZGVkLiBIYXMgdGhlIGNvZGUKKyAgICAgICAgdGhhdCB3YXMgcHJldmlvdXNseSBp
biBEb2N1bWVudDo6ZGlzcGF0Y2hJbWFnZUxvYWRFdmVudHNOb3cuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxvYWRFdmVudFNlbmRlcjo6dGltZXJGaXJlZCk6IEFkZGVkLiBDYWxscyBkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzLgorCisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6IElt
cHJvdmVkIGNvbW1lbnRzLiBNYWRlIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyBwcml2YXRlCisgICAg
ICAgIG9yIHByb3RlY3RlZCByYXRoZXIgdGhhbiBwdWJsaWMuIEFkZGVkIHN0YXRpYyBkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzIGZ1bmN0aW9uCisgICAgICAgIGZvciB1c2UgYnkgRG9jdW1lbnQg
YW5kIHByaXZhdGUgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50IGZ1bmN0aW9uIGZvciB1c2UgYnkK
KyAgICAgICAgSW1hZ2VMb2FkRXZlbnRTZW5kZXIuIE1hZGUgc2V0TG9hZGluZ0ltYWdlIHByaXZh
dGUgYW5kIGVsaW1pbmF0ZWQKKyAgICAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50IHNpbmNlIHRo
YXQgY2FuIGFsbCBiZSBkb25lIGluc2lkZSB0aGUgY2xhc3Mgd2l0aG91dCBhbnkKKyAgICAgICAg
bWVtYmVyIGZ1bmN0aW9ucy4gR290IHJpZCBvZiBwb2ludGxlc3MgYm9vbGVhbiBiaXQgZmllbGRz
IHRoYXQgZG9uJ3QgbWFrZSB0aGUKKyAgICAgICAgb2JqZWN0IGFueSBzbWFsbGVyLCBzaW5jZSAz
IGJpdHMgYW5kIDMgYnl0ZXMgYm90aCBjb3N0IDQgYnl0ZXMuCisKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoTG9hZEV2ZW50KTogUmVtb3ZlZCBsb2dpYyB0byBjaGVjayB3aGV0aGVyIGEKKyAgICAg
ICAgbG9hZCBldmVudCBhbHJlYWR5IGZpcmVkIGFuZCB3aGV0aGVyIGltYWdlKCkgaXMgMC4gVGhl
c2UgYXJlIG5vdyBib3RoIGJhc2UgY2xhc3MKKyAgICAgICAgcmVzcG9uc2liaWxpdGllcy4KKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KTogRGl0dG8uCisgICAgICAgICogd21sL1dNTElt
YWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEltYWdlTG9hZGVyOjpkaXNwYXRj
aExvYWRFdmVudCk6IERpdHRvLgorCiAyMDA5LTAzLTE2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVy
LgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNDE3MzIpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsNiBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBib29sIGlzCiAgICAgLCBtX2ZyYW1lRWxlbWVudHNTaG91bGRJZ25v
cmVTY3JvbGxpbmcoZmFsc2UpCiAgICAgLCBtX3RpdGxlKCIiKQogICAgICwgbV90aXRsZVNldEV4
cGxpY2l0bHkoZmFsc2UpCi0gICAgLCBtX2ltYWdlTG9hZEV2ZW50VGltZXIodGhpcywgJkRvY3Vt
ZW50OjppbWFnZUxvYWRFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3VwZGF0ZUZvY3VzQXBwZWFy
YW5jZVRpbWVyKHRoaXMsICZEb2N1bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXJGaXJl
ZCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICAsIG1fdHJhbnNmb3JtU291cmNlKDApCkBAIC0xMjk2
LDEzICsxMjk1LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKICAgICAKICAgICAvLyBpbmRp
Y2F0ZSBkZXN0cnVjdGlvbiBtb2RlLCAgaS5lLiBhdHRhY2hlZCgpIGJ1dCByZW5kZXJlciA9PSAw
CiAgICAgc2V0UmVuZGVyZXIoMCk7Ci0gICAgCi0gICAgLy8gRW1wdHkgb3V0IHRoZXNlIGxpc3Rz
IGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBzaW5jZSBkZXRhY2hpbmcKLSAgICAvLyBh
bGwgdGhlIGluZGl2aWR1YWwgcmVuZGVyIG9iamVjdHMgd2lsbCBjYXVzZSBhbGwgdGhlIFJlbmRl
ckltYWdlCi0gICAgLy8gb2JqZWN0cyB0byByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIHRoZSBsaXN0
cy4KLSAgICBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hTb29uTGlzdC5jbGVhcigpOwotICAgIG1f
aW1hZ2VMb2FkRXZlbnREaXNwYXRjaGluZ0xpc3QuY2xlYXIoKTsKLSAgICAKKwogICAgIG1faG92
ZXJOb2RlID0gMDsKICAgICBtX2ZvY3VzZWROb2RlID0gMDsKICAgICBtX2FjdGl2ZU5vZGUgPSAw
OwpAQCAtMTU4Miw4ICsxNTc1LDggQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAg
ICAgaWYgKGYpCiAgICAgICAgIGYtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKHRoaXMp
OwogCi0gICAgZGlzcGF0Y2hJbWFnZUxvYWRFdmVudHNOb3coKTsKLSAgICB0aGlzLT5kaXNwYXRj
aFdpbmRvd0V2ZW50KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAg
SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKyAgICBkaXNwYXRjaFdp
bmRvd0V2ZW50KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgaWYg
KGYpCiAgICAgICAgIGYtPmxvYWRlcigpLT5oYW5kbGVkT25sb2FkRXZlbnRzKCk7CiAjaWZkZWYg
SU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwpAQCAtMjg3Niw1NiArMjg2OSw2IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFdpbmRvd0lubGluZUV2ZW50TGlzdGUKICAgICBzZXRXaW5kb3dJbmxpbmVF
dmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUsIGNyZWF0ZUV2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCksIDApKTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6ZGlzcGF0Y2hJbWFnZUxvYWRFdmVudFNvb24oSW1hZ2VMb2FkZXIqIGltYWdlKQotewot
ICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaFNvb25MaXN0LmFwcGVuZChpbWFnZSk7Ci0gICAg
aWYgKCFtX2ltYWdlTG9hZEV2ZW50VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9pbWFnZUxv
YWRFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBEb2N1bWVudDo6cmVtb3Zl
SW1hZ2UoSW1hZ2VMb2FkZXIqIGltYWdlKQotewotICAgIC8vIFJlbW92ZSBpbnN0YW5jZXMgb2Yg
dGhpcyBpbWFnZSBmcm9tIGJvdGggbGlzdHMuCi0gICAgLy8gVXNlIGxvb3BzIGJlY2F1c2Ugd2Ug
YWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIHRvIGdldCBpbnRvIHRoZSBsaXN0cy4KLSAgICBzaXpl
X3Qgc2l6ZSA9IG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaFNvb25MaXN0LnNpemUoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9pbWFnZUxv
YWRFdmVudERpc3BhdGNoU29vbkxpc3RbaV0gPT0gaW1hZ2UpCi0gICAgICAgICAgICBtX2ltYWdl
TG9hZEV2ZW50RGlzcGF0Y2hTb29uTGlzdFtpXSA9IDA7Ci0gICAgfQotICAgIHNpemUgPSBtX2lt
YWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdMaXN0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9pbWFnZUxvYWRFdmVudERpc3BhdGNo
aW5nTGlzdFtpXSA9PSBpbWFnZSkKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRj
aGluZ0xpc3RbaV0gPSAwOwotICAgIH0KLSAgICBpZiAobV9pbWFnZUxvYWRFdmVudERpc3BhdGNo
U29vbkxpc3QuaXNFbXB0eSgpKQotICAgICAgICBtX2ltYWdlTG9hZEV2ZW50VGltZXIuc3RvcCgp
OwotfQotCi12b2lkIERvY3VtZW50OjpkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdygpCi17Ci0g
ICAgLy8gTmVlZCB0byBhdm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0aW9uOyBpZiBuZXcgZGlz
cGF0Y2hlcyBhcmUKLSAgICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBwYXJlbnQgZmluaXNoZXMg
cHJvY2Vzc2luZyB0aGUgbGlzdCwgdGhleQotICAgIC8vIHdpbGwgc2V0IGEgdGltZXIgYW5kIGV2
ZW50dWFsbHkgYmUgcHJvY2Vzc2VkLgotICAgIGlmICghbV9pbWFnZUxvYWRFdmVudERpc3BhdGNo
aW5nTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faW1hZ2VMb2FkRXZl
bnRUaW1lci5zdG9wKCk7Ci0KLSAgICBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdMaXN0ID0g
bV9pbWFnZUxvYWRFdmVudERpc3BhdGNoU29vbkxpc3Q7Ci0gICAgbV9pbWFnZUxvYWRFdmVudERp
c3BhdGNoU29vbkxpc3QuY2xlYXIoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IG1faW1hZ2VMb2FkRXZl
bnREaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIGlmIChJbWFnZUxvYWRlciogaW1hZ2UgPSBtX2ltYWdlTG9hZEV2
ZW50RGlzcGF0Y2hpbmdMaXN0W2ldKQotICAgICAgICAgICAgaW1hZ2UtPmRpc3BhdGNoTG9hZEV2
ZW50KCk7Ci0gICAgfQotICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaGluZ0xpc3QuY2xlYXIo
KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6aW1hZ2VMb2FkRXZlbnRUaW1lckZpcmVkKFRpbWVyPERv
Y3VtZW50PiopCi17Ci0gICAgZGlzcGF0Y2hJbWFnZUxvYWRFdmVudHNOb3coKTsKLX0KLQogRWxl
bWVudCogRG9jdW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgp
KQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCShyZXZpc2lvbiA0MTczMikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEhUTUxIZWFkRWxlbWVudDsKICAgICBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogICAg
IGNsYXNzIEhUTUxNYXBFbGVtZW50OwotICAgIGNsYXNzIEltYWdlTG9hZGVyOwogICAgIGNsYXNz
IEludFBvaW50OwogICAgIGNsYXNzIEpTTm9kZTsKICAgICBjbGFzcyBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzOwpAQCAtNjM5LDEwICs2MzgsNiBAQCBwdWJsaWM6CiAgICAgICovCiAgICAg
dm9pZCBwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYg
Y29udGVudCk7CiAgICAgCi0gICAgdm9pZCBkaXNwYXRjaEltYWdlTG9hZEV2ZW50U29vbihJbWFn
ZUxvYWRlciopOwotICAgIHZvaWQgZGlzcGF0Y2hJbWFnZUxvYWRFdmVudHNOb3coKTsKLSAgICB2
b2lkIHJlbW92ZUltYWdlKEltYWdlTG9hZGVyKik7Ci0gICAgCiAgICAgLy8gUmV0dXJucyB0aGUg
b3duaW5nIGVsZW1lbnQgaW4gdGhlIHBhcmVudCBkb2N1bWVudC4KICAgICAvLyBSZXR1cm5zIDAg
aWYgdGhpcyBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50LgogICAgIEVsZW1lbnQqIG93bmVyRWxl
bWVudCgpIGNvbnN0OwpAQCAtOTIxLDEwICs5MTYsNiBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJs
ZSBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGU7CiAgICAgCi0gICAgVmVjdG9yPEltYWdl
TG9hZGVyKj4gbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoU29vbkxpc3Q7Ci0gICAgVmVjdG9yPElt
YWdlTG9hZGVyKj4gbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoaW5nTGlzdDsKLSAgICBUaW1lcjxE
b2N1bWVudD4gbV9pbWFnZUxvYWRFdmVudFRpbWVyOwotCiAgICAgVGltZXI8RG9jdW1lbnQ+IG1f
dXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXI7CiAKICAgICBFbGVtZW50KiBtX2Nzc1RhcmdldDsK
QEAgLTEwMzYsNyArMTAyNyw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVUaXRsZSgpOwogICAgIHZvaWQgcmVtb3ZlQWxsRGlzY29ubmVjdGVkTm9kZUV2ZW50TGlzdGVu
ZXJzKCk7Ci0gICAgdm9pZCBpbWFnZUxvYWRFdmVudFRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+
Kik7CiAgICAgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVkKFRpbWVyPERvY3Vt
ZW50PiopOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmNwcAkocmV2aXNpb24gNDE3MzIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDcgQEAgSFRNTEltYWdlTG9hZGVy
Ojp+SFRNTEltYWdlTG9hZGVyKCkKIAogdm9pZCBIVE1MSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9h
ZEV2ZW50KCkKIHsKLSAgICBpZiAoIWhhdmVGaXJlZExvYWRFdmVudCgpICYmIGltYWdlKCkpIHsK
LSAgICAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUpOwotICAgICAgICBlbGVtZW50KCkt
PmRpc3BhdGNoRXZlbnRGb3JUeXBlKGltYWdlKCktPmVycm9yT2NjdXJyZWQoKSA/IGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsK
LSAgICB9CisgICAgZWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50Rm9yVHlwZShpbWFnZSgpLT5lcnJv
ck9jY3VycmVkKCkgPyBldmVudE5hbWVzKCkuZXJyb3JFdmVudCA6IGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIFN0cmluZyBIVE1MSW1hZ2VMb2FkZXI6OnNvdXJj
ZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHIpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA0MTczMikKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSw2ICszMSwzMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyIHsKK3B1YmxpYzoK
KyAgICBJbWFnZUxvYWRFdmVudFNlbmRlcigpOworCisgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVu
dFNvb24oSW1hZ2VMb2FkZXIqKTsKKyAgICB2b2lkIGNhbmNlbExvYWRFdmVudChJbWFnZUxvYWRl
ciopOworCisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisKK3ByaXZhdGU6
CisgICAgfkltYWdlTG9hZEV2ZW50U2VuZGVyKCk7CisKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGlt
ZXI8SW1hZ2VMb2FkRXZlbnRTZW5kZXI+Kik7CisKKyAgICBUaW1lcjxJbWFnZUxvYWRFdmVudFNl
bmRlcj4gbV90aW1lcjsKKyAgICBWZWN0b3I8SW1hZ2VMb2FkZXIqPiBtX2Rpc3BhdGNoU29vbkxp
c3Q7CisgICAgVmVjdG9yPEltYWdlTG9hZGVyKj4gbV9kaXNwYXRjaGluZ0xpc3Q7Cit9OworCitz
dGF0aWMgSW1hZ2VMb2FkRXZlbnRTZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChJbWFnZUxvYWRFdmVudFNlbmRlciwgc2VuZGVyLCAoKSk7CisgICAg
cmV0dXJuIHNlbmRlcjsKK30KKwogSW1hZ2VMb2FkZXI6OkltYWdlTG9hZGVyKEVsZW1lbnQqIGVs
dCkKICAgICA6IG1fZWxlbWVudChlbHQpCiAgICAgLCBtX2ltYWdlKDApCkBAIC00NCw3ICs2OSw3
IEBAIEltYWdlTG9hZGVyOjp+SW1hZ2VMb2FkZXIoKQogewogICAgIGlmIChtX2ltYWdlKQogICAg
ICAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5yZW1vdmVJbWFnZSh0aGlzKTsKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxMb2Fk
RXZlbnQodGhpcyk7CiB9CiAKIHZvaWQgSW1hZ2VMb2FkZXI6OnNldEltYWdlKENhY2hlZEltYWdl
KiBuZXdJbWFnZSkKQEAgLTYxLDcgKzg2LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2Uo
Q2FjaGVkSW1hZ2UqIAogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
ICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSkgeworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtODAsMTIgKzEwNSwxMSBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudCgpCiB7CiAgICAgLy8gSWYgd2UncmUgbm90IG1ha2luZyByZW5kZXJlcnMg
Zm9yIHRoZSBwYWdlLCB0aGVuIGRvbid0IGxvYWQgaW1hZ2VzLiAgV2UgZG9uJ3Qgd2FudCB0byBz
bG93CiAgICAgLy8gZG93biB0aGUgcmF3IEhUTUwgcGFyc2luZyBjYXNlIGJ5IGxvYWRpbmcgaW1h
Z2VzIHdlIGRvbid0IGludGVuZCB0byBkaXNwbGF5LgotICAgIEVsZW1lbnQqIGVsZW0gPSBlbGVt
ZW50KCk7Ci0gICAgRG9jdW1lbnQqIGRvYyA9IGVsZW0tPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFk
b2MtPnJlbmRlcmVyKCkpCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9lbGVtZW50LT5kb2N1
bWVudCgpOworICAgIGlmICghZG9jdW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEF0b21pY1N0cmluZyBhdHRyID0gZWxlbS0+Z2V0QXR0cmlidXRlKGVsZW0tPmltYWdl
U291cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVu
dC0+Z2V0QXR0cmlidXRlKG1fZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOwog
CiAgICAgaWYgKGF0dHIgPT0gbV9mYWlsZWRMb2FkVVJMKQogICAgICAgICByZXR1cm47CkBAIC05
NSwxNSArMTE5LDE1IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAg
ICAvLyBhIHF1aXJrIHRoYXQgcHJlc2VydmVzIG9sZCBiZWhhdmlvciB0aGF0IERhc2hib2FyZCB3
aWRnZXRzCiAgICAgLy8gbmVlZCAoPHJkYXI6Ly9wcm9ibGVtLzU5OTQ2MjE+KS4KICAgICBDYWNo
ZWRJbWFnZSogbmV3SW1hZ2UgPSAwOwotICAgIGlmICghKGF0dHIuaXNOdWxsKCkgfHwgYXR0ci5p
c0VtcHR5KCkgJiYgZG9jLT5iYXNlVVJJKCkuaXNMb2NhbEZpbGUoKSkpIHsKKyAgICBpZiAoIShh
dHRyLmlzTnVsbCgpIHx8IGF0dHIuaXNFbXB0eSgpICYmIGRvY3VtZW50LT5iYXNlVVJJKCkuaXNM
b2NhbEZpbGUoKSkpIHsKICAgICAgICAgaWYgKG1fbG9hZE1hbnVhbGx5KSB7Ci0gICAgICAgICAg
ICBkb2MtPmRvY0xvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhmYWxzZSk7CisgICAgICAgICAg
ICBkb2N1bWVudC0+ZG9jTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKGZhbHNlKTsKICAgICAg
ICAgICAgIG5ld0ltYWdlID0gbmV3IENhY2hlZEltYWdlKHNvdXJjZVVSSShhdHRyKSk7CiAgICAg
ICAgICAgICBuZXdJbWFnZS0+c2V0TG9hZGluZyh0cnVlKTsKLSAgICAgICAgICAgIG5ld0ltYWdl
LT5zZXREb2NMb2FkZXIoZG9jLT5kb2NMb2FkZXIoKSk7Ci0gICAgICAgICAgICBkb2MtPmRvY0xv
YWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNldChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdl
KTsKKyAgICAgICAgICAgIG5ld0ltYWdlLT5zZXREb2NMb2FkZXIoZG9jdW1lbnQtPmRvY0xvYWRl
cigpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5kb2NMb2FkZXIoKS0+bV9kb2N1bWVudFJlc291
cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBuZXdJbWFnZSk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgbmV3SW1hZ2UgPSBkb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0SW1hZ2Uoc291cmNl
VVJJKGF0dHIpKTsKKyAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQtPmRvY0xvYWRlcigp
LT5yZXF1ZXN0SW1hZ2Uoc291cmNlVVJJKGF0dHIpKTsKIAogICAgICAgICAvLyBJZiB3ZSBkbyBu
b3QgaGF2ZSBhbiBpbWFnZSBoZXJlLCBpdCBtZWFucyB0aGF0IGEgY3Jvc3Mtc2l0ZQogICAgICAg
ICAvLyB2aW9sYXRpb24gb2NjdXJyZWQuCkBAIC0xMTksNyArMTQzLDcgQEAgdm9pZCBJbWFnZUxv
YWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgb2xkSW1hZ2UtPnJlbW92ZUNs
aWVudCh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVs
ZW0tPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxl
bWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTEzOSwxMCArMTYzLDkgQEAgdm9pZCBJbWFnZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgIEFTU0VSVChtX2ZhaWxlZExvYWRVUkwuaXNF
bXB0eSgpKTsKICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwogCi0gICAgRWxlbWVudCogZWxl
bSA9IGVsZW1lbnQoKTsKLSAgICBlbGVtLT5kb2N1bWVudCgpLT5kaXNwYXRjaEltYWdlTG9hZEV2
ZW50U29vbih0aGlzKTsKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaExvYWRFdmVudFNv
b24odGhpcyk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW0tPnJlbmRl
cmVyKCkpIHsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVu
ZGVyZXIoKSkgewogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE1MCw0ICsxNzMsNzYgQEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUgogICAgIH0KIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQ
ZW5kaW5nTG9hZEV2ZW50KCkKK3sKKyAgICBpZiAobV9maXJlZExvYWQpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+YXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZmlyZWRM
b2FkID0gdHJ1ZTsKKyAgICBkaXNwYXRjaExvYWRFdmVudCgpOworfQorCit2b2lkIEltYWdlTG9h
ZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKK3sKKyAgICBsb2FkRXZlbnRTZW5kZXIo
KS5kaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7Cit9CisKK0ltYWdlTG9hZEV2ZW50U2VuZGVy
OjpJbWFnZUxvYWRFdmVudFNlbmRlcigpCisgICAgOiBtX3RpbWVyKHRoaXMsICZJbWFnZUxvYWRF
dmVudFNlbmRlcjo6dGltZXJGaXJlZCkKK3sKK30KKwordm9pZCBJbWFnZUxvYWRFdmVudFNlbmRl
cjo6ZGlzcGF0Y2hMb2FkRXZlbnRTb29uKEltYWdlTG9hZGVyKiBsb2FkZXIpCit7CisgICAgbV9k
aXNwYXRjaFNvb25MaXN0LmFwcGVuZChsb2FkZXIpOworICAgIGlmICghbV90aW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBJbWFnZUxv
YWRFdmVudFNlbmRlcjo6Y2FuY2VsTG9hZEV2ZW50KEltYWdlTG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgLy8gUmVtb3ZlIGluc3RhbmNlcyBvZiB0aGlzIGxvYWRlciBmcm9tIGJvdGggbGlzdHMuCisg
ICAgLy8gVXNlIGxvb3BzIGJlY2F1c2Ugd2UgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIHRvIGdl
dCBpbnRvIHRoZSBsaXN0cy4KKyAgICBzaXplX3Qgc2l6ZSA9IG1fZGlzcGF0Y2hTb29uTGlzdC5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
aWYgKG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9PSBsb2FkZXIpCisgICAgICAgICAgICBtX2Rpc3Bh
dGNoU29vbkxpc3RbaV0gPSAwOworICAgIH0KKyAgICBzaXplID0gbV9kaXNwYXRjaGluZ0xpc3Qu
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
IGlmIChtX2Rpc3BhdGNoaW5nTGlzdFtpXSA9PSBsb2FkZXIpCisgICAgICAgICAgICBtX2Rpc3Bh
dGNoaW5nTGlzdFtpXSA9IDA7CisgICAgfQorICAgIGlmIChtX2Rpc3BhdGNoU29vbkxpc3QuaXNF
bXB0eSgpKQorICAgICAgICBtX3RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBJbWFnZUxvYWRFdmVu
dFNlbmRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCit7CisgICAgLy8gTmVlZCB0byBh
dm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0aW9uOyBpZiBuZXcgZGlzcGF0Y2hlcyBhcmUKKyAg
ICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBwYXJlbnQgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGUg
bGlzdCwgdGhleQorICAgIC8vIHdpbGwgc2V0IGEgdGltZXIgYW5kIGV2ZW50dWFsbHkgYmUgcHJv
Y2Vzc2VkLgorICAgIGlmICghbV9kaXNwYXRjaGluZ0xpc3QuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIG1fZGlzcGF0Y2hpbmdMaXN0ID0g
bV9kaXNwYXRjaFNvb25MaXN0OworICAgIG1fZGlzcGF0Y2hTb29uTGlzdC5jbGVhcigpOworICAg
IHNpemVfdCBzaXplID0gbV9kaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChJbWFnZUxvYWRlciogbG9hZGVy
ID0gbV9kaXNwYXRjaGluZ0xpc3RbaV0pCisgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudCgpOworICAgIH0KKyAgICBtX2Rpc3BhdGNoaW5nTGlzdC5jbGVhcigpOwor
fQorCit2b2lkIEltYWdlTG9hZEV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKFRpbWVyPEltYWdlTG9h
ZEV2ZW50U2VuZGVyPiopCit7CisgICAgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworfQor
CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDQxNzMyKQorKysgV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzAsMjIgKzMwLDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1l
bnQ7CitjbGFzcyBJbWFnZUxvYWRFdmVudFNlbmRlcjsKIAogY2xhc3MgSW1hZ2VMb2FkZXIgOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIEltYWdlTG9hZGVyKEVs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5JbWFnZUxvYWRlcigpOwogCisgICAgLy8gVGhpcyBmdW5j
dGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgYXR0YWNoZWQgdG8gYSBk
b2N1bWVudDsgc3RhcnRzIGxvYWRpbmcuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwog
Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciB0aGUgJ3NyYycgYXR0
cmlidXRlCi0gICAgLy8gaXMgc2V0IChldmVuIHdoZW4gaXQgaXMgbm90IG1vZGlmaWVkKSB0byBm
b3JjZSB0aGUgdXBkYXRlCi0gICAgLy8gYW5kIG1hdGNoIEZpcmVmb3ggYW5kIE9wZXJhLgorICAg
IC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgJ3NyYycgYXR0
cmlidXRlIGlzIHNldCwgZXZlbiBpZiBpdHMgdmFsdWUKKyAgICAvLyBkb2Vzbid0IGNoYW5nZTsg
c3RhcnRzIG5ldyBsb2FkIHVuY29uZGl0aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVy
YSBiZWhhdmlvcikuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNF
cnJvcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCA9IDA7
Ci0KICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAg
ICAgYm9vbCBpbWFnZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUNvbXBsZXRlOyB9
CiAKQEAgLTU0LDIyICs1MiwyOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExvYWRNYW51YWxs
eShib29sIGxvYWRNYW51YWxseSkgeyBtX2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsgfQog
Ci0gICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQgQVBJCi0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7Ci0KICAgICBib29sIGhhdmVGaXJlZExvYWRFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisKIHByb3RlY3RlZDoKLSAgICB2b2lkIHNldExvYWRp
bmdJbWFnZShDYWNoZWRJbWFnZSopOwotICAgIAotICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2
ZW50KGJvb2wgZmlyZWRMb2FkKSB7IG1fZmlyZWRMb2FkID0gZmlyZWRMb2FkOyB9CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKIHByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCA9IDA7CisKKyAgICBmcmll
bmQgY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXI7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdM
b2FkRXZlbnQoKTsKKworICAgIHZvaWQgc2V0TG9hZGluZ0ltYWdlKENhY2hlZEltYWdlKik7CisK
ICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
SW1hZ2U+IG1faW1hZ2U7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFpbGVkTG9hZFVSTDsKLSAgICBi
b29sIG1fZmlyZWRMb2FkIDogMTsKLSAgICBib29sIG1faW1hZ2VDb21wbGV0ZSA6IDE7Ci0gICAg
Ym9vbCBtX2xvYWRNYW51YWxseSA6IDE7CisgICAgYm9vbCBtX2ZpcmVkTG9hZDsKKyAgICBib29s
IG1faW1hZ2VDb21wbGV0ZTsKKyAgICBib29sIG1fbG9hZE1hbnVhbGx5OwogfTsKIAogfQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gNDE3MzIpCisrKyBXZWJDb3JlL3N2Zy9T
VkdJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0MiwxMiBAQCBTVkdJ
bWFnZUxvYWRlcjo6flNWR0ltYWdlTG9hZGVyKCkKIAogdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hMb2FkRXZlbnQoKQogewotICAgIGlmICghaGF2ZUZpcmVkTG9hZEV2ZW50KCkgJiYgaW1h
Z2UoKSkgewotICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0gICAgICAgIAot
ICAgICAgICBpZiAoaW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgZWxlbWVu
dCgpLT5kaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2Us
IGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTVkdJbWFnZUVsZW1lbnQqIGlt
YWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0g
ICAgICAgICAgICBpZiAoaW1hZ2VFbGVtZW50LT5leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFz
ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5zZW5kU1ZHTG9hZEV2ZW50
SWZQb3NzaWJsZSh0cnVlKTsKLSAgICAgICAgfQorICAgIGlmIChpbWFnZSgpLT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgZWxzZSB7CisgICAgICAgIFNWR0lt
YWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4o
ZWxlbWVudCgpKTsKKyAgICAgICAgaWYgKGltYWdlRWxlbWVudC0+ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEJhc2VWYWx1ZSgpKQorICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5zZW5kU1ZHTG9h
ZEV2ZW50SWZQb3NzaWJsZSh0cnVlKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvd21sL1dN
TEltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxJbWFnZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDQxNzMyKQorKysgV2ViQ29yZS93bWwvV01MSW1hZ2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsNiBAQCBXTUxJbWFnZUxvYWRlcjo6fldNTElt
YWdlTG9hZGVyKCkKIHZvaWQgV01MSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsK
ICAgICAvLyBXTUwgZG9lc24ndCBmaXJlIGFueSBldmVudHMuCi0gICAgaWYgKGhhdmVGaXJlZExv
YWRFdmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQo
dHJ1ZSk7CiB9CiAKIFN0cmluZyBXTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cikgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28656</attachid>
            <date>2009-03-16 12:54:26 -0700</date>
            <delta_ts>2009-03-17 01:46:45 -0700</delta_ts>
            <desc>patch, this time with a regression test</desc>
            <filename>ImageAdoptPatch.txt</filename>
            <type>text/plain</type>
            <size>24698</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTczNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMDktMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDYyNDogQ3Jhc2ggaW4gaW1hZ2VMb2FkRXZlbnRUaW1lckZpcmVkIGFmdGVyIGFkb3B0Tm9kZSB1
c2VkIG9uIDxpbWc+LAorICAgICAgICBzZWVuIHdpdGggaW5zcGVjdG9yLCB3aGljaCB1c2VzIGFk
b3B0Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQ2MjQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNjQyMjg1MAorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbG9hZC1jcm9zcy1kb2N1bWVudC5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KTogUmVtb3ZlZCBtX2ltYWdlTG9hZEV2ZW50VGltZXIuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZGV0YWNoKTogUmVtb3ZlZCBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hT
b29uTGlzdCBhbmQKKyAgICAgICAgbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoaW5nTGlzdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKTogQ2FsbGVkIEltYWdlTG9h
ZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzCisgICAgICAgIGluc3RlYWQgb2YgZGlzcGF0
Y2hJbWFnZUxvYWRFdmVudHNOb3cuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogUmVtb3Zl
ZCBJbWFnZUxvYWRlciwgZGlzcGF0Y2hJbWFnZUxvYWRFdmVudFNvb24sCisgICAgICAgIGRpc3Bh
dGNoSW1hZ2VMb2FkRXZlbnRzTm93LCByZW1vdmVJbWFnZSwgbV9pbWFnZUxvYWRFdmVudERpc3Bh
dGNoU29vbkxpc3QsCisgICAgICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaGluZ0xpc3QsIG1f
aW1hZ2VMb2FkRXZlbnRUaW1lciwgYW5kIGltYWdlTG9hZEV2ZW50VGltZXJGaXJlZC4KKworICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRXZl
bnRTZW5kZXIpOiBBZGRlZC4gUmV0dXJucyB0aGUgc2luZ2xlIGdsb2JhbCBJbWFnZUxvYWRFdmVu
dFNlbmRlcgorICAgICAgICBvYmplY3QgdXNlZCBwcml2YXRlbHkgYXMgdGhlIHRhcmdldCBvZiB0
aGUgbG9hZCBldmVudCB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjp+SW1h
Z2VMb2FkZXIpOiBDYWxsIEltYWdlTG9hZEV2ZW50U2VuZGVyOjpjYW5jZWxMb2FkRXZlbnQKKyAg
ICAgICAgcmF0aGVyIHRoYW4gRG9jdW1lbnQ6OnJlbW92ZUltYWdlLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMb2FkZXI6OnNldEltYWdlKTogVXNlIG1fZWxlbWVudCBkaXJlY3RseSwgbm90IGVs
ZW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dCk6IERpdHRvLiBBbHNvIG5hbWUgdGhlIGxvY2FsIHZhcmlhYmxlCisgICAgICAgIGRvY3VtZW50
IGluc3RlYWQgb2YgZG9jLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKTogQ2FsbCBJbWFnZUxvYWRFdmVudFNlbmRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnRTb29u
CisgICAgICAgIHJhdGhlciB0aGFuIERvY3VtZW50OjpkaXNwYXRjaEltYWdlTG9hZEV2ZW50U29v
bi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnQpOiBBZGRlZC4gSGFuZGxlcyB0aGUgY29tbW9uIGxvZ2ljCisgICAgICAgIGFib3V0IHdoZW4g
bG9hZCBldmVudHMgY2FuIGJlIGRpc3BhdGNoZWQgc28gdGhhdCBkaXNwYXRjaExvYWRFdmVudCBv
bmx5IGhhcyB0bworICAgICAgICBoYXZlIHRoZSBzcGVjaWZpYyBwYXJ0IGZvciBlYWNoIGRlcml2
ZWQgY2xhc3MuIFRoaXMgaW5jbHVkZXMgYSBjaGVjayB0aGF0IHRoZQorICAgICAgICBkb2N1bWVu
dCBpcyBhdHRhY2hlZCwgd2hpY2ggdXNlZCB0byBiZSBoYW5kbGVkIGJ5IGhhdmluZyBkb2N1bWVu
dHMgZW1wdHkgb3V0IHRoZQorICAgICAgICBpbWFnZSBsb2FkIGV2ZW50IHZlY3RvcnMgaW4gdGhl
IGRldGFjaCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzKTogQWRkZWQuIENhbGxzIHRoZSBhcHByb3ByaWF0ZQorICAgICAg
ICBmdW5jdGlvbiBvbiB0aGUgSW1hZ2VMb2FkRXZlbnRTZW5kZXIsIHdoaWNoIGF2b2lkcyB0aGUg
bmVlZCB0byBoYXZlIHRoYXQgY2xhc3MgYmUKKyAgICAgICAgcHVibGljIGluIHRoZSBJbWFnZUxv
YWRlciBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRFdmVudFNlbmRlcjo6SW1h
Z2VMb2FkRXZlbnRTZW5kZXIpOiBBZGRlZC4gSGFzIHRoZSBjb2RlIHRoYXQKKyAgICAgICAgd2Fz
IHByZXZpb3VzbHkgaW4gdGhlIERvY3VtZW50IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMb2FkRXZlbnRTZW5kZXI6OmRpc3BhdGNoTG9hZEV2ZW50U29vbik6IEFkZGVkLiBI
YXMgdGhlIGNvZGUgdGhhdAorICAgICAgICB3YXMgcHJldmlvdXNseSBpbiBEb2N1bWVudDo6ZGlz
cGF0Y2hJbWFnZUxvYWRFdmVudFNvb24uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRFdmVu
dFNlbmRlcjo6Y2FuY2VsTG9hZEV2ZW50KTogQWRkZWQuIEhhcyB0aGUgY29kZSB0aGF0IHdhcwor
ICAgICAgICBwcmV2aW91c2x5IGluIERvY3VtZW50OjpyZW1vdmVJbWFnZS4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlTG9hZEV2ZW50U2VuZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKTog
QWRkZWQuIEhhcyB0aGUgY29kZQorICAgICAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGluIERvY3Vt
ZW50OjpkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TG9hZEV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKTogQWRkZWQuIENhbGxzIGRpc3BhdGNoUGVuZGlu
Z0xvYWRFdmVudHMuCisKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuaDogSW1wcm92ZWQg
Y29tbWVudHMuIE1hZGUgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIHByaXZhdGUKKyAgICAgICAgb3Ig
cHJvdGVjdGVkIHJhdGhlciB0aGFuIHB1YmxpYy4gQWRkZWQgc3RhdGljIGRpc3BhdGNoUGVuZGlu
Z0xvYWRFdmVudHMgZnVuY3Rpb24KKyAgICAgICAgZm9yIHVzZSBieSBEb2N1bWVudCBhbmQgcHJp
dmF0ZSBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQgZnVuY3Rpb24gZm9yIHVzZSBieQorICAgICAg
ICBJbWFnZUxvYWRFdmVudFNlbmRlci4gTWFkZSBzZXRMb2FkaW5nSW1hZ2UgcHJpdmF0ZSBhbmQg
ZWxpbWluYXRlZAorICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQgc2luY2UgdGhhdCBjYW4g
YWxsIGJlIGRvbmUgaW5zaWRlIHRoZSBjbGFzcyB3aXRob3V0IGFueQorICAgICAgICBtZW1iZXIg
ZnVuY3Rpb25zLiBHb3QgcmlkIG9mIHBvaW50bGVzcyBib29sZWFuIGJpdCBmaWVsZHMgdGhhdCBk
b24ndCBtYWtlIHRoZQorICAgICAgICBvYmplY3QgYW55IHNtYWxsZXIsIHNpbmNlIDMgYml0cyBh
bmQgMyBieXRlcyBib3RoIGNvc3QgNCBieXRlcy4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hM
b2FkRXZlbnQpOiBSZW1vdmVkIGxvZ2ljIHRvIGNoZWNrIHdoZXRoZXIgYQorICAgICAgICBsb2Fk
IGV2ZW50IGFscmVhZHkgZmlyZWQgYW5kIHdoZXRoZXIgaW1hZ2UoKSBpcyAwLiBUaGVzZSBhcmUg
bm93IGJvdGggYmFzZSBjbGFzcworICAgICAgICByZXNwb25zaWJpbGl0aWVzLgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUxvYWRl
cjo6ZGlzcGF0Y2hMb2FkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKiB3bWwvV01MSW1hZ2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2
ZW50KTogRGl0dG8uCisKIDIwMDktMDMtMTYgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiA0MTczNSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGJvb2wgaXMKICAgICAsIG1fZnJhbWVFbGVtZW50c1Nob3VsZElnbm9yZVNjcm9s
bGluZyhmYWxzZSkKICAgICAsIG1fdGl0bGUoIiIpCiAgICAgLCBtX3RpdGxlU2V0RXhwbGljaXRs
eShmYWxzZSkKLSAgICAsIG1faW1hZ2VMb2FkRXZlbnRUaW1lcih0aGlzLCAmRG9jdW1lbnQ6Omlt
YWdlTG9hZEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNlVGlt
ZXIodGhpcywgJkRvY3VtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVkKQogI2lm
IEVOQUJMRShYU0xUKQogICAgICwgbV90cmFuc2Zvcm1Tb3VyY2UoMCkKQEAgLTEyOTYsMTMgKzEy
OTUsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQogICAgIAogICAgIC8vIGluZGljYXRlIGRl
c3RydWN0aW9uIG1vZGUsICBpLmUuIGF0dGFjaGVkKCkgYnV0IHJlbmRlcmVyID09IDAKICAgICBz
ZXRSZW5kZXJlcigwKTsKLSAgICAKLSAgICAvLyBFbXB0eSBvdXQgdGhlc2UgbGlzdHMgYXMgYSBw
ZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHNpbmNlIGRldGFjaGluZwotICAgIC8vIGFsbCB0aGUg
aW5kaXZpZHVhbCByZW5kZXIgb2JqZWN0cyB3aWxsIGNhdXNlIGFsbCB0aGUgUmVuZGVySW1hZ2UK
LSAgICAvLyBvYmplY3RzIHRvIHJlbW92ZSB0aGVtc2VsdmVzIGZyb20gdGhlIGxpc3RzLgotICAg
IG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaFNvb25MaXN0LmNsZWFyKCk7Ci0gICAgbV9pbWFnZUxv
YWRFdmVudERpc3BhdGNoaW5nTGlzdC5jbGVhcigpOwotICAgIAorCiAgICAgbV9ob3Zlck5vZGUg
PSAwOwogICAgIG1fZm9jdXNlZE5vZGUgPSAwOwogICAgIG1fYWN0aXZlTm9kZSA9IDA7CkBAIC0x
NTgyLDggKzE1NzUsOCBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBpZiAo
ZikKICAgICAgICAgZi0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnModGhpcyk7CiAKLSAg
ICBkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdygpOwotICAgIHRoaXMtPmRpc3BhdGNoV2luZG93
RXZlbnQoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworICAgIGRpc3BhdGNoV2luZG93RXZl
bnQoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKICAgICBpZiAoZikKICAg
ICAgICAgZi0+bG9hZGVyKCktPmhhbmRsZWRPbmxvYWRFdmVudHMoKTsKICNpZmRlZiBJTlNUUlVN
RU5UX0xBWU9VVF9TQ0hFRFVMSU5HCkBAIC0yODc2LDU2ICsyODY5LDYgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0V2luZG93SW5saW5lRXZlbnRMaXN0ZQogICAgIHNldFdpbmRvd0lubGluZUV2ZW50TGlz
dGVuZXJGb3JUeXBlKGV2ZW50VHlwZSwgY3JlYXRlRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5h
bWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSwgMCkpOwogfQogCi12b2lkIERvY3VtZW50Ojpk
aXNwYXRjaEltYWdlTG9hZEV2ZW50U29vbihJbWFnZUxvYWRlciogaW1hZ2UpCi17Ci0gICAgbV9p
bWFnZUxvYWRFdmVudERpc3BhdGNoU29vbkxpc3QuYXBwZW5kKGltYWdlKTsKLSAgICBpZiAoIW1f
aW1hZ2VMb2FkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2ltYWdlTG9hZEV2ZW50
VGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCi12b2lkIERvY3VtZW50OjpyZW1vdmVJbWFnZShJ
bWFnZUxvYWRlciogaW1hZ2UpCi17Ci0gICAgLy8gUmVtb3ZlIGluc3RhbmNlcyBvZiB0aGlzIGlt
YWdlIGZyb20gYm90aCBsaXN0cy4KLSAgICAvLyBVc2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxvdyBt
dWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8gdGhlIGxpc3RzLgotICAgIHNpemVfdCBzaXpl
ID0gbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoU29vbkxpc3Quc2l6ZSgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ltYWdlTG9hZEV2ZW50
RGlzcGF0Y2hTb29uTGlzdFtpXSA9PSBpbWFnZSkKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkRXZl
bnREaXNwYXRjaFNvb25MaXN0W2ldID0gMDsKLSAgICB9Ci0gICAgc2l6ZSA9IG1faW1hZ2VMb2Fk
RXZlbnREaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdMaXN0
W2ldID09IGltYWdlKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoaW5nTGlz
dFtpXSA9IDA7Ci0gICAgfQotICAgIGlmIChtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hTb29uTGlz
dC5pc0VtcHR5KCkpCi0gICAgICAgIG1faW1hZ2VMb2FkRXZlbnRUaW1lci5zdG9wKCk7Ci19Ci0K
LXZvaWQgRG9jdW1lbnQ6OmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRzTm93KCkKLXsKLSAgICAvLyBO
ZWVkIHRvIGF2b2lkIHJlLWVudGVyaW5nIHRoaXMgZnVuY3Rpb247IGlmIG5ldyBkaXNwYXRjaGVz
IGFyZQotICAgIC8vIHNjaGVkdWxlZCBiZWZvcmUgdGhlIHBhcmVudCBmaW5pc2hlcyBwcm9jZXNz
aW5nIHRoZSBsaXN0LCB0aGV5Ci0gICAgLy8gd2lsbCBzZXQgYSB0aW1lciBhbmQgZXZlbnR1YWxs
eSBiZSBwcm9jZXNzZWQuCi0gICAgaWYgKCFtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdMaXN0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbWFnZUxvYWRFdmVudFRpbWVy
LnN0b3AoKTsKLQotICAgIG1faW1hZ2VMb2FkRXZlbnREaXNwYXRjaGluZ0xpc3QgPSBtX2ltYWdl
TG9hZEV2ZW50RGlzcGF0Y2hTb29uTGlzdDsKLSAgICBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hT
b29uTGlzdC5jbGVhcigpOwotICAgIHNpemVfdCBzaXplID0gbV9pbWFnZUxvYWRFdmVudERpc3Bh
dGNoaW5nTGlzdC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgaWYgKEltYWdlTG9hZGVyKiBpbWFnZSA9IG1faW1hZ2VMb2FkRXZlbnREaXNw
YXRjaGluZ0xpc3RbaV0pCi0gICAgICAgICAgICBpbWFnZS0+ZGlzcGF0Y2hMb2FkRXZlbnQoKTsK
LSAgICB9Ci0gICAgbV9pbWFnZUxvYWRFdmVudERpc3BhdGNoaW5nTGlzdC5jbGVhcigpOwotfQot
Ci12b2lkIERvY3VtZW50OjppbWFnZUxvYWRFdmVudFRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+
KikKLXsKLSAgICBkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdygpOwotfQotCiBFbGVtZW50KiBE
b2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDQxNzM1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNyArODMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SFRNTEhlYWRFbGVtZW50OwogICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAgICAgY2xhc3Mg
SFRNTE1hcEVsZW1lbnQ7Ci0gICAgY2xhc3MgSW1hZ2VMb2FkZXI7CiAgICAgY2xhc3MgSW50UG9p
bnQ7CiAgICAgY2xhc3MgSlNOb2RlOwogICAgIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHM7CkBAIC02MzksMTAgKzYzOCw2IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICB2b2lkIHBy
b2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKICAgICAKLSAgICB2b2lkIGRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRTb29uKEltYWdlTG9hZGVy
Kik7Ci0gICAgdm9pZCBkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdygpOwotICAgIHZvaWQgcmVt
b3ZlSW1hZ2UoSW1hZ2VMb2FkZXIqKTsKLSAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBvd25pbmcg
ZWxlbWVudCBpbiB0aGUgcGFyZW50IGRvY3VtZW50LgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlz
IGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkg
Y29uc3Q7CkBAIC05MjEsMTAgKzkxNiw2IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIEFYT2Jq
ZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZTsKICAgICAKLSAgICBWZWN0b3I8SW1hZ2VMb2FkZXIq
PiBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hTb29uTGlzdDsKLSAgICBWZWN0b3I8SW1hZ2VMb2Fk
ZXIqPiBtX2ltYWdlTG9hZEV2ZW50RGlzcGF0Y2hpbmdMaXN0OwotICAgIFRpbWVyPERvY3VtZW50
PiBtX2ltYWdlTG9hZEV2ZW50VGltZXI7Ci0KICAgICBUaW1lcjxEb2N1bWVudD4gbV91cGRhdGVG
b2N1c0FwcGVhcmFuY2VUaW1lcjsKIAogICAgIEVsZW1lbnQqIG1fY3NzVGFyZ2V0OwpAQCAtMTAz
Niw3ICsxMDI3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRpdGxl
KCk7CiAgICAgdm9pZCByZW1vdmVBbGxEaXNjb25uZWN0ZWROb2RlRXZlbnRMaXN0ZW5lcnMoKTsK
LSAgICB2b2lkIGltYWdlTG9hZEV2ZW50VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKICAg
ICB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7
CiAgICAgdm9pZCB1cGRhdGVCYXNlVVJMKCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiA0MTczNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsNyBAQCBIVE1MSW1hZ2VMb2FkZXI6On5IVE1M
SW1hZ2VMb2FkZXIoKQogCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQo
KQogewotICAgIGlmICghaGF2ZUZpcmVkTG9hZEV2ZW50KCkgJiYgaW1hZ2UoKSkgewotICAgICAg
ICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0gICAgICAgIGVsZW1lbnQoKS0+ZGlzcGF0
Y2hFdmVudEZvclR5cGUoaW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpID8gZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgIH0K
KyAgICBlbGVtZW50KCktPmRpc3BhdGNoRXZlbnRGb3JUeXBlKGltYWdlKCktPmVycm9yT2NjdXJy
ZWQoKSA/IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
ZmFsc2UsIGZhbHNlKTsKIH0KIAogU3RyaW5nIEhUTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDQxNzM1KQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMxLDYgKzMxLDMxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXIgeworcHVibGljOgorICAgIElt
YWdlTG9hZEV2ZW50U2VuZGVyKCk7CisKKyAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50U29vbihJ
bWFnZUxvYWRlciopOworICAgIHZvaWQgY2FuY2VsTG9hZEV2ZW50KEltYWdlTG9hZGVyKik7CisK
KyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKworcHJpdmF0ZToKKyAgICB+
SW1hZ2VMb2FkRXZlbnRTZW5kZXIoKTsKKworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxJbWFn
ZUxvYWRFdmVudFNlbmRlcj4qKTsKKworICAgIFRpbWVyPEltYWdlTG9hZEV2ZW50U2VuZGVyPiBt
X3RpbWVyOworICAgIFZlY3RvcjxJbWFnZUxvYWRlcio+IG1fZGlzcGF0Y2hTb29uTGlzdDsKKyAg
ICBWZWN0b3I8SW1hZ2VMb2FkZXIqPiBtX2Rpc3BhdGNoaW5nTGlzdDsKK307CisKK3N0YXRpYyBJ
bWFnZUxvYWRFdmVudFNlbmRlciYgbG9hZEV2ZW50U2VuZGVyKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEltYWdlTG9hZEV2ZW50U2VuZGVyLCBzZW5kZXIsICgpKTsKKyAgICByZXR1cm4g
c2VuZGVyOworfQorCiBJbWFnZUxvYWRlcjo6SW1hZ2VMb2FkZXIoRWxlbWVudCogZWx0KQogICAg
IDogbV9lbGVtZW50KGVsdCkKICAgICAsIG1faW1hZ2UoMCkKQEAgLTQ0LDcgKzY5LDcgQEAgSW1h
Z2VMb2FkZXI6On5JbWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAgIG1f
aW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnJl
bW92ZUltYWdlKHRoaXMpOworICAgIGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbExvYWRFdmVudCh0
aGlzKTsKIH0KIAogdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2UoQ2FjaGVkSW1hZ2UqIG5ld0lt
YWdlKQpAQCAtNjEsNyArODYsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpzZXRJbWFnZShDYWNoZWRJ
bWFnZSogCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIH0K
IAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5yZW5kZXJlcigp
KSB7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC04MCwxMiArMTA1LDExIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21F
bGVtZW50KCkKIHsKICAgICAvLyBJZiB3ZSdyZSBub3QgbWFraW5nIHJlbmRlcmVycyBmb3IgdGhl
IHBhZ2UsIHRoZW4gZG9uJ3QgbG9hZCBpbWFnZXMuICBXZSBkb24ndCB3YW50IHRvIHNsb3cKICAg
ICAvLyBkb3duIHRoZSByYXcgSFRNTCBwYXJzaW5nIGNhc2UgYnkgbG9hZGluZyBpbWFnZXMgd2Ug
ZG9uJ3QgaW50ZW5kIHRvIGRpc3BsYXkuCi0gICAgRWxlbWVudCogZWxlbSA9IGVsZW1lbnQoKTsK
LSAgICBEb2N1bWVudCogZG9jID0gZWxlbS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvYy0+cmVu
ZGVyZXIoKSkKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCk7
CisgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QXRvbWljU3RyaW5nIGF0dHIgPSBlbGVtLT5nZXRBdHRyaWJ1dGUoZWxlbS0+aW1hZ2VTb3VyY2VB
dHRyaWJ1dGVOYW1lKCkpOworICAgIEF0b21pY1N0cmluZyBhdHRyID0gbV9lbGVtZW50LT5nZXRB
dHRyaWJ1dGUobV9lbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBp
ZiAoYXR0ciA9PSBtX2ZhaWxlZExvYWRVUkwpCiAgICAgICAgIHJldHVybjsKQEAgLTk1LDE1ICsx
MTksMTUgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIC8vIGEg
cXVpcmsgdGhhdCBwcmVzZXJ2ZXMgb2xkIGJlaGF2aW9yIHRoYXQgRGFzaGJvYXJkIHdpZGdldHMK
ICAgICAvLyBuZWVkICg8cmRhcjovL3Byb2JsZW0vNTk5NDYyMT4pLgogICAgIENhY2hlZEltYWdl
KiBuZXdJbWFnZSA9IDA7Ci0gICAgaWYgKCEoYXR0ci5pc051bGwoKSB8fCBhdHRyLmlzRW1wdHko
KSAmJiBkb2MtPmJhc2VVUkkoKS5pc0xvY2FsRmlsZSgpKSkgeworICAgIGlmICghKGF0dHIuaXNO
dWxsKCkgfHwgYXR0ci5pc0VtcHR5KCkgJiYgZG9jdW1lbnQtPmJhc2VVUkkoKS5pc0xvY2FsRmls
ZSgpKSkgewogICAgICAgICBpZiAobV9sb2FkTWFudWFsbHkpIHsKLSAgICAgICAgICAgIGRvYy0+
ZG9jTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKGZhbHNlKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5kb2NMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoZmFsc2UpOwogICAgICAgICAgICAg
bmV3SW1hZ2UgPSBuZXcgQ2FjaGVkSW1hZ2Uoc291cmNlVVJJKGF0dHIpKTsKICAgICAgICAgICAg
IG5ld0ltYWdlLT5zZXRMb2FkaW5nKHRydWUpOwotICAgICAgICAgICAgbmV3SW1hZ2UtPnNldERv
Y0xvYWRlcihkb2MtPmRvY0xvYWRlcigpKTsKLSAgICAgICAgICAgIGRvYy0+ZG9jTG9hZGVyKCkt
Pm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UpOworICAg
ICAgICAgICAgbmV3SW1hZ2UtPnNldERvY0xvYWRlcihkb2N1bWVudC0+ZG9jTG9hZGVyKCkpOwor
ICAgICAgICAgICAgZG9jdW1lbnQtPmRvY0xvYWRlcigpLT5tX2RvY3VtZW50UmVzb3VyY2VzLnNl
dChuZXdJbWFnZS0+dXJsKCksIG5ld0ltYWdlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBuZXdJbWFnZSA9IGRvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RJbWFnZShzb3VyY2VVUkkoYXR0
cikpOworICAgICAgICAgICAgbmV3SW1hZ2UgPSBkb2N1bWVudC0+ZG9jTG9hZGVyKCktPnJlcXVl
c3RJbWFnZShzb3VyY2VVUkkoYXR0cikpOwogCiAgICAgICAgIC8vIElmIHdlIGRvIG5vdCBoYXZl
IGFuIGltYWdlIGhlcmUsIGl0IG1lYW5zIHRoYXQgYSBjcm9zcy1zaXRlCiAgICAgICAgIC8vIHZp
b2xhdGlvbiBvY2N1cnJlZC4KQEAgLTExOSw3ICsxNDMsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1
cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRo
aXMpOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbS0+cmVu
ZGVyZXIoKSkgeworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTM5LDEwICsxNjMsOSBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgQVNTRVJUKG1fZmFpbGVkTG9hZFVSTC5pc0VtcHR5KCkp
OwogICAgIG1faW1hZ2VDb21wbGV0ZSA9IHRydWU7CiAKLSAgICBFbGVtZW50KiBlbGVtID0gZWxl
bWVudCgpOwotICAgIGVsZW0tPmRvY3VtZW50KCktPmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRTb29u
KHRoaXMpOworICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoTG9hZEV2ZW50U29vbih0aGlz
KTsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbS0+cmVuZGVyZXIoKSkg
eworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigp
KSB7CiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMTUwLDQgKzE3Myw3NiBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSCiAgICAgfQogfQogCit2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkRXZlbnQoKQoreworICAgIGlmIChtX2ZpcmVkTG9hZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9lbGVtZW50LT5kb2N1
bWVudCgpLT5hdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9maXJlZExvYWQgPSB0
cnVlOworICAgIGRpc3BhdGNoTG9hZEV2ZW50KCk7Cit9CisKK3ZvaWQgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQoreworICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3Bh
dGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKK30KKworSW1hZ2VMb2FkRXZlbnRTZW5kZXI6OkltYWdl
TG9hZEV2ZW50U2VuZGVyKCkKKyAgICA6IG1fdGltZXIodGhpcywgJkltYWdlTG9hZEV2ZW50U2Vu
ZGVyOjp0aW1lckZpcmVkKQoreworfQorCit2b2lkIEltYWdlTG9hZEV2ZW50U2VuZGVyOjpkaXNw
YXRjaExvYWRFdmVudFNvb24oSW1hZ2VMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2Rpc3BhdGNo
U29vbkxpc3QuYXBwZW5kKGxvYWRlcik7CisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEltYWdlTG9hZEV2ZW50
U2VuZGVyOjpjYW5jZWxMb2FkRXZlbnQoSW1hZ2VMb2FkZXIqIGxvYWRlcikKK3sKKyAgICAvLyBS
ZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMgbG9hZGVyIGZyb20gYm90aCBsaXN0cy4KKyAgICAvLyBV
c2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxvdyBtdWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8g
dGhlIGxpc3RzLgorICAgIHNpemVfdCBzaXplID0gbV9kaXNwYXRjaFNvb25MaXN0LnNpemUoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAobV9k
aXNwYXRjaFNvb25MaXN0W2ldID09IGxvYWRlcikKKyAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29u
TGlzdFtpXSA9IDA7CisgICAgfQorICAgIHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
ZGlzcGF0Y2hpbmdMaXN0W2ldID09IGxvYWRlcikKKyAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdM
aXN0W2ldID0gMDsKKyAgICB9CisgICAgaWYgKG1fZGlzcGF0Y2hTb29uTGlzdC5pc0VtcHR5KCkp
CisgICAgICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2b2lkIEltYWdlTG9hZEV2ZW50U2VuZGVy
OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKK3sKKyAgICAvLyBOZWVkIHRvIGF2b2lkIHJl
LWVudGVyaW5nIHRoaXMgZnVuY3Rpb247IGlmIG5ldyBkaXNwYXRjaGVzIGFyZQorICAgIC8vIHNj
aGVkdWxlZCBiZWZvcmUgdGhlIHBhcmVudCBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBsaXN0LCB0
aGV5CisgICAgLy8gd2lsbCBzZXQgYSB0aW1lciBhbmQgZXZlbnR1YWxseSBiZSBwcm9jZXNzZWQu
CisgICAgaWYgKCFtX2Rpc3BhdGNoaW5nTGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdGltZXIuc3RvcCgpOworCisgICAgbV9kaXNwYXRjaGluZ0xpc3QgPSBtX2Rpc3Bh
dGNoU29vbkxpc3Q7CisgICAgbV9kaXNwYXRjaFNvb25MaXN0LmNsZWFyKCk7CisgICAgc2l6ZV90
IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKEltYWdlTG9hZGVyKiBsb2FkZXIgPSBtX2Rp
c3BhdGNoaW5nTGlzdFtpXSkKKyAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hQZW5kaW5nTG9h
ZEV2ZW50KCk7CisgICAgfQorICAgIG1fZGlzcGF0Y2hpbmdMaXN0LmNsZWFyKCk7Cit9CisKK3Zv
aWQgSW1hZ2VMb2FkRXZlbnRTZW5kZXI6OnRpbWVyRmlyZWQoVGltZXI8SW1hZ2VMb2FkRXZlbnRT
ZW5kZXI+KikKK3sKKyAgICBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7Cit9CisKIH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuaAkocmV2aXNpb24gNDE3MzUpCisrKyBXZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
MCwyMiArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKK2Ns
YXNzIEltYWdlTG9hZEV2ZW50U2VuZGVyOwogCiBjbGFzcyBJbWFnZUxvYWRlciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgSW1hZ2VMb2FkZXIoRWxlbWVudCop
OwogICAgIHZpcnR1YWwgfkltYWdlTG9hZGVyKCk7CiAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBhdHRhY2hlZCB0byBhIGRvY3VtZW50
OyBzdGFydHMgbG9hZGluZy4KICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICAv
LyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHRoZSAnc3JjJyBhdHRyaWJ1dGUK
LSAgICAvLyBpcyBzZXQgKGV2ZW4gd2hlbiBpdCBpcyBub3QgbW9kaWZpZWQpIHRvIGZvcmNlIHRo
ZSB1cGRhdGUKLSAgICAvLyBhbmQgbWF0Y2ggRmlyZWZveCBhbmQgT3BlcmEuCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSAnc3JjJyBhdHRyaWJ1dGUg
aXMgc2V0LCBldmVuIGlmIGl0cyB2YWx1ZQorICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMg
bmV3IGxvYWQgdW5jb25kaXRpb25hbGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2
aW9yKS4KICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKLQogICAg
IEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBib29s
IGltYWdlQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQ29tcGxldGU7IH0KIApAQCAt
NTQsMjIgKzUyLDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TG9hZE1hbnVhbGx5KGJvb2wg
bG9hZE1hbnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5OyB9CiAKLSAgICAv
LyBDYWNoZWRSZXNvdXJjZUNsaWVudCBBUEkKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKTsKLQogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9maXJlZExvYWQ7IH0KKworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudHMoKTsKKwogcHJvdGVjdGVkOgotICAgIHZvaWQgc2V0TG9hZGluZ0ltYWdl
KENhY2hlZEltYWdlKik7Ci0gICAgCi0gICAgdm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZlbnQoYm9v
bCBmaXJlZExvYWQpIHsgbV9maXJlZExvYWQgPSBmaXJlZExvYWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc291
cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKKworICAgIGZyaWVuZCBjbGFz
cyBJbWFnZUxvYWRFdmVudFNlbmRlcjsKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVu
dCgpOworCisgICAgdm9pZCBzZXRMb2FkaW5nSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKwogICAgIEVs
ZW1lbnQqIG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4g
bV9pbWFnZTsKICAgICBBdG9taWNTdHJpbmcgbV9mYWlsZWRMb2FkVVJMOwotICAgIGJvb2wgbV9m
aXJlZExvYWQgOiAxOwotICAgIGJvb2wgbV9pbWFnZUNvbXBsZXRlIDogMTsKLSAgICBib29sIG1f
bG9hZE1hbnVhbGx5IDogMTsKKyAgICBib29sIG1fZmlyZWRMb2FkOworICAgIGJvb2wgbV9pbWFn
ZUNvbXBsZXRlOworICAgIGJvb2wgbV9sb2FkTWFudWFsbHk7CiB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiA0MTczNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTYgKzQyLDEyIEBAIFNWR0ltYWdlTG9h
ZGVyOjp+U1ZHSW1hZ2VMb2FkZXIoKQogCiB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExv
YWRFdmVudCgpCiB7Ci0gICAgaWYgKCFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiBpbWFnZSgpKSB7
Ci0gICAgICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChpbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBlbGVtZW50KCktPmRp
c3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2Up
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICAgICAg
ICAgIGlmIChpbWFnZUVsZW1lbnQtPmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnNlbmRTVkdMb2FkRXZlbnRJZlBvc3Np
YmxlKHRydWUpOwotICAgICAgICB9CisgICAgaWYgKGltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkK
KyAgICAgICAgZWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50Rm9yVHlwZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgU1ZHSW1hZ2VFbGVt
ZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihlbGVtZW50
KCkpOworICAgICAgICBpZiAoaW1hZ2VFbGVtZW50LT5leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QmFzZVZhbHVlKCkpCisgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnNlbmRTVkdMb2FkRXZlbnRJ
ZlBvc3NpYmxlKHRydWUpOwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS93bWwvV01MSW1hZ2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTEltYWdlTG9hZGVyLmNwcAko
cmV2aXNpb24gNDE3MzUpCisrKyBXZWJDb3JlL3dtbC9XTUxJbWFnZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDEwICs0NSw2IEBAIFdNTEltYWdlTG9hZGVyOjp+V01MSW1hZ2VMb2Fk
ZXIoKQogdm9pZCBXTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIC8v
IFdNTCBkb2Vzbid0IGZpcmUgYW55IGV2ZW50cy4KLSAgICBpZiAoaGF2ZUZpcmVkTG9hZEV2ZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsK
IH0KIAogU3RyaW5nIFdNTEltYWdlTG9hZGVyOjpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5n
JiBhdHRyKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDE3MzUpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wMy0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVnIDI0NjI0OiBDcmFzaCBpbiBpbWFnZUxvYWRFdmVudFRp
bWVyRmlyZWQgYWZ0ZXIgYWRvcHROb2RlIHVzZWQgb24gPGltZz4sCisgICAgICAgIHNlZW4gd2l0
aCBpbnNwZWN0b3IsIHdoaWNoIHVzZXMgYWRvcHROb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDYyNAorICAgICAgICByZGFyOi8vcHJvYmxlbS82
NDIyODUwCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvYWQt
Y3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvYWQtY3Jvc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9yZXNvdXJjZXMvaW1hZ2UtbG9hZC1z
dWJmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAwOS0wMy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvYWQtY3Jvc3Mt
ZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbG9hZC1jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2lt
YWdlLWxvYWQtY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK1RoaXMgdGVzdHMgdGhlIGNhc2Ugd2hlcmUgYW4gaW1hZ2UgaXMgbG9hZGVkIGlu
IG9uZSBkb2N1bWVudCBhbmQgdGhlbiBtb3ZlZCB0byBhbm90aGVyIGJlZm9yZSB0aGUgbG9hZCBl
dmVudCBmaXJlcy4KKworUEFTUzogVGVzdCBjb21wbGV0ZSBhbmQgcGFzc2VkIHVubGVzcyBhIHN1
YnNlcXVlbnQgdGVzdCBjcmFzaGVzLgorCisKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb2FkLWNyb3NzLWRvY3VtZW50
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZl
CgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb2Fk
LWNyb3NzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEltYWdlRWxlbWVudC9pbWFnZS1sb2FkLWNyb3NzLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L2ltYWdlLWxvYWQt
Y3Jvc3MtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGhlYWQ+
Cis8c2NyaXB0PgorCit2YXIgaXNEb2N1bWVudExvYWRlZCA9IGZhbHNlOwordmFyIGlzRnJhbWVM
b2FkZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gZXZlcnl0aGluZ0xvYWRlZCgpCit7CisgICAgdmFy
IG90aGVyRG9jdW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKS5jb250ZW50
RG9jdW1lbnQ7CisgICAgdmFyIGltYWdlVVJMID0gZG9jdW1lbnQuVVJMLnJlcGxhY2UoImltYWdl
LWxvYWQtY3Jvc3MtZG9jdW1lbnQuaHRtbCIsICJyZXNvdXJjZXMvYmx1ZV9yZWN0LmpwZyIpOwor
ICAgIG90aGVyRG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiPHAgaWQ9J2NvbnRhaW5lcic+PGlt
ZyBzcmM9JyIgKyBpbWFnZVVSTCArICInPjwvcD4iOworICAgIHZhciBjb250YWluZXIgPSBvdGhl
ckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKKyAgICBkb2N1bWVudC5hZG9w
dE5vZGUoY29udGFpbmVyKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5l
cik7CisgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICIiOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQQVNTOiBUZXN0IGNvbXBsZXRlIGFuZCBw
YXNzZWQgdW5sZXNzIGEgc3Vic2VxdWVudCB0ZXN0IGNyYXNoZXMuIjsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gZG9jdW1lbnRMb2FkZWQoKQoreworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgfQorCisgICAgaXNEb2N1bWVudExvYWRlZCA9IHRydWU7CisKKyAgICBpZiAo
aXNGcmFtZUxvYWRlZCkKKyAgICAgICAgZXZlcnl0aGluZ0xvYWRlZCgpOworfQorCitmdW5jdGlv
biBmcmFtZUxvYWRlZCgpCit7CisgICAgaXNGcmFtZUxvYWRlZCA9IHRydWU7CisKKyAgICBpZiAo
aXNEb2N1bWVudExvYWRlZCkKKyAgICAgICAgZXZlcnl0aGluZ0xvYWRlZCgpOworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9jdW1lbnRMb2FkZWQoKSI+Cis8cD5UaGlz
IHRlc3RzIHRoZSBjYXNlIHdoZXJlIGFuIGltYWdlIGlzIGxvYWRlZCBpbiBvbmUgZG9jdW1lbnQg
YW5kIHRoZW4gbW92ZWQgdG8gYW5vdGhlciBiZWZvcmUgdGhlIGxvYWQgZXZlbnQgZmlyZXMuPC9w
PgorPHAgaWQ9InJlc3VsdCI+VEVTVCBOT1QgQ09NUExFVEUgWUVUPC9wPgorPGlmcmFtZSBpZD0i
ZnJhbWUiIHNyYz0icmVzb3VyY2VzL2ltYWdlLWxvYWQtc3ViZnJhbWUuaHRtbCIgb25sb2FkPSJm
cmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvaW1hZ2UtbG9hZC1jcm9zcy1kb2N1
bWVudC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwK
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3Jlc291cmNlcy9pbWFnZS1sb2FkLXN1YmZyYW1lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9yZXNv
dXJjZXMvaW1hZ2UtbG9hZC1zdWJmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9yZXNvdXJjZXMvaW1hZ2UtbG9hZC1zdWJmcmFt
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACis8Ym9keT48aW1nIHNyYz0iYmx1ZV9y
ZWN0LmpwZyI+PC9ib2R5Pgo=
</data>
<flag name="review"
          id="14109"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>