<?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>56220</bug_id>
          
          <creation_ts>2011-03-11 13:47:18 -0800</creation_ts>
          <short_desc>Add full screen animation code to WebFullScreenManager.</short_desc>
          <delta_ts>2011-03-11 21:43:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55993</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>andersca</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>366289</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 13:47:18 -0800</bug_when>
    <thetext>Animation of the full screen element&apos;s CALayer must be done in the WebProcess, so add that code to WebFullScreenManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366306</commentid>
    <comment_count>1</comment_count>
      <attachid>85530</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 14:08:38 -0800</bug_when>
    <thetext>Created attachment 85530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366327</commentid>
    <comment_count>2</comment_count>
      <attachid>85539</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 14:46:00 -0800</bug_when>
    <thetext>Created attachment 85539
Patch

Modified the linker settings for new files in the .xcodeproj.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366432</commentid>
    <comment_count>3</comment_count>
      <attachid>85539</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-03-11 17:05:05 -0800</bug_when>
    <thetext>Comment on attachment 85539
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        * WebProcess/FullScreen/WebFullScreenManager.cpp: Move functions into virtual base class.

I don&apos;t see a virtual base class here. Maybe this should say &quot;Move virtual functions into base class&quot;?

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:51
&gt; +    

Extra newline.

&gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.h:38
&gt; +typedef struct objc_object *id;

I don&apos;t think forward declaring id like this works with newer compilers. Could you forward declare WebFullScreenManagerAnimationListener instead and use it for the RetainPtr?

We have an OBJC_CLASS macro that is useful for forward declaring Objective-C classes.

&gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm:88
&gt; +    _manager = NULL;

= 0;

&gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm:132
&gt; +        m_rootLayer-&gt;setName(&quot;LayerTreeHost root layer&quot;);

This should say something else, maybe &quot;Full screen root layer&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366462</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 18:03:46 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 85539 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85539&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        * WebProcess/FullScreen/WebFullScreenManager.cpp: Move functions into virtual base class.
&gt; 
&gt; I don&apos;t see a virtual base class here. Maybe this should say &quot;Move virtual functions into base class&quot;?

Yes, this was incredibly poorly written.  How about, &quot;Make functions pure virtual to be implemented by a concrete subclass.&quot;?

&gt; &gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:51
&gt; &gt; +    
&gt; 
&gt; Extra newline.

Deleted.

&gt; &gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.h:38
&gt; &gt; +typedef struct objc_object *id;
&gt; 
&gt; I don&apos;t think forward declaring id like this works with newer compilers. Could you forward declare WebFullScreenManagerAnimationListener instead and use it for the RetainPtr?
&gt; 
&gt; We have an OBJC_CLASS macro that is useful for forward declaring Objective-C classes.

OBJC_CLASS seems to work fine here.  Changed.

&gt; &gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm:88
&gt; &gt; +    _manager = NULL;
&gt; 
&gt; = 0;

Changed.

&gt; &gt; Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm:132
&gt; &gt; +        m_rootLayer-&gt;setName(&quot;LayerTreeHost root layer&quot;);
&gt; 
&gt; This should say something else, maybe &quot;Full screen root layer&quot;.

Suggestion taken.  Changed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366494</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 20:20:22 -0800</bug_when>
    <thetext>Committed r80923: &lt;http://trac.webkit.org/changeset/80923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366501</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 20:53:23 -0800</bug_when>
    <thetext>Committed r80924: &lt;http://trac.webkit.org/changeset/80924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366509</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 21:17:09 -0800</bug_when>
    <thetext>Committed r80925: &lt;http://trac.webkit.org/changeset/80925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366512</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 21:32:53 -0800</bug_when>
    <thetext>webkit-patch added the above commit messages incorrectly, probably due to #56241.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366517</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-11 21:43:18 -0800</bug_when>
    <thetext>The correct message is the last one:

Committed r80925: &lt;http://trac.webkit.org/changeset/80925&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85530</attachid>
            <date>2011-03-11 14:08:38 -0800</date>
            <delta_ts>2011-03-11 14:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56220-20110311140837.patch</filename>
            <type>text/plain</type>
            <size>26471</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYjU2ZTA4NDk1MDAyMTQ0
ZGE2M2ExMjU1ZjVkODNmODY5Mzk5N2M4Li4xNTAyMTEwM2EwNjk3OGNiZjk1NWQxYmU5NDU4NTRl
MzVkN2Y3MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzYgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBZGQgZnVsbCBzY3JlZW4gYW5pbWF0aW9u
IGNvZGUgdG8gV2ViRnVsbFNjcmVlbk1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjIyMAorCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDogTW92ZSBmdW5jdGlvbnMgaW50byB2aXJ0
dWFsIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+
V2ViRnVsbFNjcmVlbk1hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFJlbW92ZSBBU1NFUlRzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEVudGVyRnVsbFNjcmVl
bik6IFNldCB0aGUgZnVsbCBzY3JlZW4gcmVuZGVyZXIncyBiYWNrZ3JvdW5kIGNvbG9yLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsU2NyZWVuKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1
bGxTY3JlZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OmRpZEV4aXRGdWxsU2NyZWVuKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBpbml0V2l0
aE1hbmFnZXI6V2ViS2l0OjpiZWdhbjpmaW5pc2hlZDpdKTogTGlzdGVuZXIgZm9yIENBQW5pbWF0
aW9ucy4KKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBh
bmltYXRpb25EaWRTdGFydDpdKTogQWRkZWQuCisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyQW5pbWF0aW9uTGlzdGVuZXIgYW5pbWF0aW9uRGlkU3RvcDpmaW5pc2hlZDpdKTogQWRkZWQu
CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIgaW52YWxp
ZGF0ZV0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNy
ZWF0ZSk6IE5vdyBjcmVhdGVzIGEgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjp+V2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWM6OnNldFJvb3RGdWxsU2NyZWVuTGF5ZXIpOiBTZXQgdXAgdGhlIHJlbW90
ZSBsYXllciBob3N0LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6
YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24pOiBDcmVhdGUgYSBDQVRyYW5zZm9ybTNECisg
ICAgICAgICAgICB3aGljaCB3aWxsIGFuaW1hdGUgdGhlIGZ1bGwgc2NyZWVuIHJlbmRlcmVyIGZy
b20gaXRzIGluaXRpYWwgcG9zaXRpb24gdG8gaXRzIGZpbmFsIG9uZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24p
OiBEaXR0by4KKworMjAxMS0wMy0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBIb29rIHVw
IG5ldyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZ1bmN0aW9ucyB0byBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjIxOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMGUyYjJkZjdmM2JmOWIwNzIxOGJiOGFkMzRjM2U2MGU0MWE5
ZTRiMC4uYjhjMjlhNjhlYmQ1NTIyMjQwODBiNGU5MGFiMDUzZjI5OWU5NTQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ5
LDYgKzc0OSw4IEBACiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oICovOyB9OwogCQlDRENBODVENTEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RD
QTg1REYxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0g
aW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NURF
MTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovOyB9
OworCQlDRENBODVFNzEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMu
aCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1
RTUxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi87IH07CisJ
CUNEQ0E4NUU4MTMyQUQzMzAwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbSBp
biBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1RTYx
MzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tICovOyB9OwogCQlE
M0I5NDg0NjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJQb3B1cE1lbnUuY3BwICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkg
LyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07
CiAJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CkBAIC04MzAsNiAr
ODMyLDggQEAKIAkJCQlDRDczQkE0QzEzMUFDRDhGMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJNZXNzYWdlcy5oIGluIENvcHlGaWxlcyAqLywKIAkJCQlDRDczQkE0RDEzMUFDRDhGMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gQ29weUZpbGVz
ICovLAogCQkJCUNEQ0E4NURGMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWFjLm1tIGluIENvcHlGaWxlcyAqLywKKwkJCQlDRENBODVFNzEzMkFEMzMwMDBFOTYx
REYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCBpbiBDb3B5RmlsZXMgKi8sCisJCQkJQ0RD
QTg1RTgxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tIGluIENv
cHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTE2MTcsNiArMTYyMSw4IEBACiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5
NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwogCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQ0E4NUU1MTMyQUQzMzAwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRENBODVFNjEzMkFEMzMwMDBF
OTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDIxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQb3B1cE1l
bnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0MzExRkY0QjY1MDAw
MzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDEx
RkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zMDYwLDYgKzMwNjYsNyBAQAogCQlDRDczQkEzRDEzMUEyQTIx
MDBFRURFRDIgLyogRnVsbFNjcmVlbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQ0RDQTg1RTQxMzJBRDMzMDAwRTk2MURGIC8qIG1hYyAqLywKIAkJCQlD
RDczQkEzNzEzMUEyOUZFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwICovLAog
CQkJCUNENzNCQTM4MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5oICov
LAogCQkJCUNENzNCQTM5MTMxQTI5RkUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbiAqLywKQEAgLTMwNjcsNiArMzA3NCwxNiBAQAogCQkJbmFtZSA9IEZ1bGxTY3Jl
ZW47CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDRENBODVFNDEzMkFEMzMw
MDBFOTYxREYgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDRENBODVFNTEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJN
YWMuaCAqLywKKwkJCQlDRENBODVFNjEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXBhdGggPSBGdWxsU2Ny
ZWVuL21hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3Jv
dXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRleCBkNTJiMjI1YmE0YWVkY2UxNjAxN2YyNTk3
YzJkY2ZmNWJkMjFkODJmLi42YWQ1YWFmY2YxNjg1YmFkMDEyYzQxMGJlZmFlM2MzYjgwNTQ3NTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAKQEAgLTQwLDE1ICs0MSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2UpKTsKLX0KLQogV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKIHsKIH0KKyAgICAKK1dlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1h
bmFnZXIoKQoreworICAgIAorfQogCiBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6ZWxlbWVudCgpIAogeyAKQEAgLTgwLDYgKzgxLDggQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVt
ZW50KQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKKyAgICBBU1NFUlQoZWxlbWVudCk7Cisg
ICAgQVNTRVJUKG1fZWxlbWVudCA9PSBlbGVtZW50KTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsU2NyZWVuKCkpOwogfQogCkBA
IC0xMDIsMTAgKzEwNSw2IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmZpbmlzaGVkRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpCiB7CiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpGaW5pc2hlZEV4aXRGdWxsU2Ny
ZWVuQW5pbWF0aW9uKGNvbXBsZXRlZCkpOwogfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQot
ewotfQogICAgIAogSW50UmVjdCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6Z2V0RnVsbFNjcmVlblJl
Y3QoKQogewpAQCAtMTE4LDMzICsxMTcsMzAgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9l
bGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCht
X2VsZW1lbnQuZ2V0KCkpOworICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RnVsbFNjcmVl
blJlbmRlcmVyQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiB9CiAKIHZvaWQg
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgQVNTRVJU
KG1fZWxlbWVudCk7CiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7CisgICAgbV9lbGVtZW50LT5kb2N1
bWVudCgpLT5zZXRGdWxsU2NyZWVuUmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNr
KTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsU2NyZWVuKCkK
IHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPndl
YmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9lbGVtZW50LmdldCgpKTsKKyAgICBt
X2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpk
aWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9lbGVt
ZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9lbGVt
ZW50LmdldCgpKTsKKyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5k
ZXJlckJhY2tncm91bmRDb2xvcihDb2xvcjo6YmxhY2spOwogfQogCi12b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikK
LXsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVnaW5FeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmgKaW5kZXggNmU3N2UwNGMwMDJmZjQ1ZTQ4MjIyMjNmMTg0YmU1
ZGQyNjlmMDE5MS4uNWFjMGEwODkxMWVlMDM2MGYwYjk1M2IzNmEzNzI0YTBhYWZhZWU3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNs
YXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRnVsbFNjcmVl
bk1hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVu
TWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5XZWJGdWxsU2NyZWVuTWFu
YWdlcigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIApAQCAt
NjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFu
aW1hdGlvbihib29sIGNvbXBsZXRlZCk7CiAgICAgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuQW5p
bWF0aW9uKCk7CiAgICAgdm9pZCBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wg
Y29tcGxldGVkKTsKLSAgICB2b2lkIHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVt
ZW50KCk7CiAKQEAgLTcxLDggKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkRW50ZXJG
dWxsU2NyZWVuKCk7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGRp
ZEV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bihmbG9hdCBkdXJhdGlvbik7Ci0gICAgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
KGZsb2F0IGR1cmF0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FbnRlckZ1bGxTY3JlZW5B
bmltYXRpb24oZmxvYXQgZHVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikgPSAwOwogICAgIFdlYkNvcmU6Oklu
dFJlY3QgZ2V0RnVsbFNjcmVlblJlY3QoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1h
bmFnZXJNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzU5ODQ2OTFiYmJkMDE0ZDMwNDJiMDU5YTlmYmM4MDI3
MmQ2ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjX2gKKyNkZWZpbmUgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWNfaAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorCisj
aW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdl
ci5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19XS0NBUmVtb3RlTGF5ZXJDbGllbnRSZWYqIFdLQ0FS
ZW1vdGVMYXllckNsaWVudFJlZjsKK3R5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjIDogcHVi
bGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJGdWxsU2NyZWVuTWFuYWdlck1hYz4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsK
KworcHJpdmF0ZToKKyAgICBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhXZWJQYWdlKik7CisgICAg
dmlydHVhbCB+V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbik7CisgICAgdmlydHVh
bCB2b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pOworCisg
ICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExheWVyOworICAgIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqIG1fZnVsbFNjcmVlblJvb3RMYXllcjsKKyAgICBMYXllclRyZWVD
b250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKKyAgICBSZXRhaW5QdHI8V0tDQVJlbW90ZUxheWVy
Q2xpZW50UmVmPiBtX3JlbW90ZUxheWVyQ2xpZW50OworICAgIFJldGFpblB0cjxpZD4gbV9lbnRl
ckZ1bGxTY3JlZW5MaXN0ZW5lcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fZXhpdEZ1bGxTY3JlZW5M
aXN0ZW5lcjsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKwor
I2VuZGlmIC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3OWNkMGFjYTM5ZmQ0NGI0NDMxZDFiZmFiNzk4
ZmE4NTI5YzlmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsMjU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViRnVsbFNjcmVl
bk1hbmFnZXJNYWMuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2ltcG9ydCAi
Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2ltcG9ydCAiTGF5
ZXJUcmVlSG9zdE1hYy5oIgorI2ltcG9ydCAiTWVzc2FnZUlELmgiCisjaW1wb3J0ICJXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBv
cnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3R5cGVkZWYgdm9pZCAoV2Vi
S2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6KkFuaW1hdGlvbkJlZ2FuRnVuY3Rpb24pKCk7Cit0
eXBlZGVmIHZvaWQgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OipBbmltYXRpb25GaW5p
c2hlZEZ1bmN0aW9uKShib29sKTsKKworQGludGVyZmFjZSBXZWJGdWxsU2NyZWVuTWFuYWdlckFu
aW1hdGlvbkxpc3RlbmVyIDogTlNPYmplY3QgeworICAgIFdlYktpdDo6V2ViRnVsbFNjcmVlbk1h
bmFnZXIqIF9tYW5hZ2VyOworICAgIEFuaW1hdGlvbkJlZ2FuRnVuY3Rpb24gX2JlZ2FuOworICAg
IEFuaW1hdGlvbkZpbmlzaGVkRnVuY3Rpb24gX2ZpbmlzaGVkOworfQorLSAoaWQpaW5pdFdpdGhN
YW5hZ2VyOihXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKiltYW5hZ2VyIGJlZ2FuOihBbmlt
YXRpb25CZWdhbkZ1bmN0aW9uKWJlZ2FuIGZpbmlzaGVkOihBbmltYXRpb25GaW5pc2hlZEZ1bmN0
aW9uKWZpbmlzaGVkOworLSAodm9pZClhbmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRpb24gKilh
bmltOworLSAodm9pZClhbmltYXRpb25EaWRTdG9wOihDQUFuaW1hdGlvbiAqKWFuaW0gZmluaXNo
ZWQ6KEJPT0wpZmxhZzsKKy0gKHZvaWQpaW52YWxpZGF0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIKKy0gKGlkKWluaXRXaXRo
TWFuYWdlcjooV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlciopbWFuYWdlciBiZWdhbjooQW5p
bWF0aW9uQmVnYW5GdW5jdGlvbiliZWdhbiBmaW5pc2hlZDooQW5pbWF0aW9uRmluaXNoZWRGdW5j
dGlvbilmaW5pc2hlZAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxm
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX21hbmFnZXIgPSBtYW5hZ2VyOworICAgIF9i
ZWdhbiA9IGJlZ2FuOworICAgIF9maW5pc2hlZCA9IGZpbmlzaGVkOworICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW0KK3sK
KyAgICBpZiAoX21hbmFnZXIgJiYgX2JlZ2FuKQorICAgICAgICAoX21hbmFnZXItPipfYmVnYW4p
KCk7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3RvcDooQ0FBbmltYXRpb24gKilhbmltIGZp
bmlzaGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAoX21hbmFnZXIgJiYgX2ZpbmlzaGVkKQorICAg
ICAgICAoX21hbmFnZXItPipfZmluaXNoZWQpKGZsYWcpOworfQorCistICh2b2lkKWludmFsaWRh
dGUKK3sKKyAgICBfbWFuYWdlciA9IE5VTEw7CisgICAgX2JlZ2FuID0gMDsKKyAgICBfZmluaXNo
ZWQgPSAwOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJG
dWxsU2NyZWVuTWFuYWdlcj4gV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBw
YWdlKQoreworICAgIHJldHVybiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Y3JlYXRlKHBhZ2Up
OworfQorCitQYXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjPiBXZWJGdWxsU2NyZWVu
TWFuYWdlck1hYzo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhwYWdlKSk7Cit9CisKK1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhXZWJQYWdlKiBwYWdlKQorICAgIDog
V2ViRnVsbFNjcmVlbk1hbmFnZXIocGFnZSkKK3sKKyAgICBtX2VudGVyRnVsbFNjcmVlbkxpc3Rl
bmVyLmFkb3B0TlMoW1tXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aE1hbmFnZXI6dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJl
Z2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYzo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25dKTsKKyAgICBtX2V4aXRGdWxs
U2NyZWVuTGlzdGVuZXIuYWRvcHROUyhbW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoTWFuYWdlcjp0aGlzIGJlZ2FuOiZXZWJGdWxsU2NyZWVuTWFu
YWdlck1hYzo6YmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbiBmaW5pc2hlZDomV2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWM6OmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25dKTsKK30KKwor
V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6On5XZWJGdWxsU2NyZWVuTWFuYWdlck1hYygpCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSk7CisgICAgW21fZW50ZXJGdWxsU2NyZWVuTGlz
dGVuZXIuZ2V0KCkgaW52YWxpZGF0ZV07CisgICAgW21fZXhpdEZ1bGxTY3JlZW5MaXN0ZW5lci5n
ZXQoKSBpbnZhbGlkYXRlXTsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6c2V0
Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAg
ICBpZiAobV9mdWxsU2NyZWVuUm9vdExheWVyID09IGxheWVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9mdWxsU2NyZWVuUm9vdExheWVyID0gbGF5ZXI7CisKKyAgICBpZiAoIW1fcm9vdExheWVy
KSB7CisgICAgICAgIG1hY2hfcG9ydF90IHNlcnZlclBvcnQgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKTsKKyAgICAgICAgbV9yZW1vdGVMYXllckNs
aWVudCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudE1ha2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0
KTsKKworICAgICAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShOVUxMKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJMYXllclRyZWVI
b3N0IHJvb3QgbGF5ZXIiKTsKKyNlbmRpZgorICAgICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3ND
b250ZW50KGZhbHNlKTsKKyAgICAgICAgbV9yb290TGF5ZXItPnNldFNpemUoZ2V0RnVsbFNjcmVl
blJlY3QoKS5zaXplKCkpOworCisgICAgICAgIFttX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigp
IHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOworICAgICAgICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRT
ZXRMYXllcihtX3JlbW90ZUxheWVyQ2xpZW50LmdldCgpLCBtX3Jvb3RMYXllci0+cGxhdGZvcm1M
YXllcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IFdLQ0FSZW1v
dGVMYXllckNsaWVudEdldENsaWVudElkKG1fcmVtb3RlTGF5ZXJDbGllbnQuZ2V0KCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobV9sYXllclRyZWVDb250ZXh0KSk7CisgICAg
fQorCisgICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CisKKyAgICBpZiAobV9m
dWxsU2NyZWVuUm9vdExheWVyKQorICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9mdWxs
U2NyZWVuUm9vdExheWVyKTsKKworICAgIG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisK
K3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0
aW9uKGZsb2F0IGR1cmF0aW9uKQoreworICAgIEFTU0VSVChtX2VsZW1lbnQpOworICAgIEFTU0VS
VChtX2Z1bGxTY3JlZW5Sb290TGF5ZXIpOworCisgICAgSW50UmVjdCBkZXN0aW5hdGlvbkZyYW1l
ID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsKKyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1
bGxTY3JlZW5SZW5kZXJlclNpemUoZGVzdGluYXRpb25GcmFtZS5zaXplKCkpOworICAgIG1fcm9v
dExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSB3ZSBnYWluIHRoZSBh
YmlsaXR5IHRvIGRvIG5hdGl2ZSBXZWJLaXQgYW5pbWF0aW9ucyBvZiBnZW5lcmF0ZWQKKyAgICAv
LyBjb250ZW50LCB0aGlzIGNhbiBjaGFuZ2UgdG8gdXNlIHRoZW0uICBNZWFud2hpbGUsIHdlJ2xs
IGhhdmUgdG8gYW5pbWF0ZSB0aGUKKyAgICAvLyBDQUxheWVyIGRpcmVjdGx5OgorICAgIENBTGF5
ZXIqIGNhTGF5ZXIgPSBtX2Z1bGxTY3JlZW5Sb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKwor
ICAgIC8vIENyZWF0ZSBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB0aGF0IHdpbGwgdHJhbnNmb3Jt
IHRoZSByZW5kZXJlciBsYXllciBzdWNoIHRoYXQKKyAgICAvLyB0aGUgZnVsbHNjcmVlbiBlbGVt
ZW50IGFwcGVhcnMgdG8gbW92ZSBmcm9tIGl0cyBzdGFydGluZyBwb3NpdGlvbiBhbmQgc2l6ZSB0
byBpdHMKKyAgICAvLyBmaW5hbCBvbmUuCisgICAgQ0dQb2ludCBkZXN0aW5hdGlvblBvc2l0aW9u
ID0gW2NhTGF5ZXIgcG9zaXRpb25dOworICAgIENHUG9pbnQgbGF5ZXJBbmNob3IgPSBbY2FMYXll
ciBhbmNob3JQb2ludF07CisgICAgQ0dQb2ludCBpbml0aWFsUG9zaXRpb24gPSBDR1BvaW50TWFr
ZSgKKyAgICAgICAgbV9pbml0aWFsRnJhbWUueCgpICsgbV9pbml0aWFsRnJhbWUud2lkdGgoKSAq
IGxheWVyQW5jaG9yLngsCisgICAgICAgIG1faW5pdGlhbEZyYW1lLnkoKSArIG1faW5pdGlhbEZy
YW1lLmhlaWdodCgpICogbGF5ZXJBbmNob3IueSk7CisgICAgQ0FUcmFuc2Zvcm0zRCBzaHJpbmtU
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKAorICAgICAgICBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihtX2luaXRpYWxGcmFtZS53aWR0aCgpKSAvIGRlc3RpbmF0aW9uRnJhbWUud2lkdGgo
KSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obV9pbml0aWFsRnJhbWUuaGVpZ2h0KCkp
IC8gZGVzdGluYXRpb25GcmFtZS5oZWlnaHQoKSwgMSk7CisgICAgQ0FUcmFuc2Zvcm0zRCBzaGlm
dFRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oCisgICAgICAgIGluaXRp
YWxQb3NpdGlvbi54IC0gZGVzdGluYXRpb25Qb3NpdGlvbi54LAorICAgICAgICAvLyBEcmF3aW5n
IGlzIGZsaXBwZWQgaGVyZSwgYW5kIHNvIG11Y2ggYmUgdGhlIHRyYW5zbGF0aW9uIHRyYW5zZm9y
bWF0aW9uCisgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24ueSAtIGluaXRpYWxQb3NpdGlvbi55
LCAwKTsKKyAgICBDQVRyYW5zZm9ybTNEIGZpbmFsVHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRENv
bmNhdChzaHJpbmtUcmFuc2Zvcm0sIHNoaWZ0VHJhbnNmb3JtKTsKKworICAgIC8vIFVzZSBhIENB
QmFzaWNBbmltYXRpb24gaGVyZSBmb3IgdGhlIHpvb20gZWZmZWN0LiBXZSB3YW50IHRvIGJlIG5v
dGlmaWVkIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMKKyAgICAvLyBjb21wbGV0ZWQgYnkgd2F5IG9m
IHRoZSBDQUFuaW1hdGlvbiBkZWxlZ2F0ZS4KKyAgICBDQUJhc2ljQW5pbWF0aW9uKiB6b29tQW5p
bWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJ0cmFuc2Zv
cm0iXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDpmaW5hbFRyYW5zZm9ybV1dOworICAgIFt6b29tQW5pbWF0aW9uIHNldFRv
VmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRp
dHldXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXREZWxlZ2F0ZTptX2VudGVyRnVsbFNjcmVlbkxp
c3RlbmVyLmdldCgpXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07
CisgICAgW3pvb21BbmltYXRpb24gc2V0VGltaW5nRnVuY3Rpb246W0NBTWVkaWFUaW1pbmdGdW5j
dGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0
XV07CisgICAgW3pvb21BbmltYXRpb24gc2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107
CisKKyAgICAvLyBEaXNhYmxlIGltcGxpY2l0IGFuaW1hdGlvbnMgYW5kIHNldCB0aGUgbGF5ZXIn
cyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gaXRzIGZpbmFsIHN0YXRlLgorICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNd
OworICAgIFtjYUxheWVyIGFkZEFuaW1hdGlvbjp6b29tQW5pbWF0aW9uIGZvcktleTpAInpvb20i
XTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCit2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjOjpiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQor
eworICAgIEFTU0VSVChtX2VsZW1lbnQpOworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5Sb290TGF5
ZXIpOworCisgICAgSW50UmVjdCBkZXN0aW5hdGlvbkZyYW1lID0gZ2V0RnVsbFNjcmVlblJlY3Qo
KTsKKyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlclNpemUo
ZGVzdGluYXRpb25GcmFtZS5zaXplKCkpOworICAgIG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7
CisKKyAgICAvLyBGSVhNRTogT25jZSB3ZSBnYWluIHRoZSBhYmlsaXR5IHRvIGRvIG5hdGl2ZSBX
ZWJLaXQgYW5pbWF0aW9ucyBvZiBnZW5lcmF0ZWQKKyAgICAvLyBjb250ZW50LCB0aGlzIGNhbiBj
aGFuZ2UgdG8gdXNlIHRoZW0uICBNZWFud2hpbGUsIHdlJ2xsIGhhdmUgdG8gYW5pbWF0ZSB0aGUK
KyAgICAvLyBDQUxheWVyIGRpcmVjdGx5OgorICAgIENBTGF5ZXIqIGNhTGF5ZXIgPSBtX2Z1bGxT
Y3JlZW5Sb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKworICAgIC8vIENyZWF0ZSBhIHRyYW5z
Zm9ybWF0aW9uIG1hdHJpeCB0aGF0IHdpbGwgdHJhbnNmb3JtIHRoZSByZW5kZXJlciBsYXllciBz
dWNoIHRoYXQKKyAgICAvLyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGFwcGVhcnMgdG8gbW92ZSBm
cm9tIGl0cyBzdGFydGluZyBwb3NpdGlvbiBhbmQgc2l6ZSB0byBpdHMKKyAgICAvLyBmaW5hbCBv
bmUuCisgICAgQ0dQb2ludCBkZXN0aW5hdGlvblBvc2l0aW9uID0gWyhDQUxheWVyKilbY2FMYXll
ciBwcmVzZW50YXRpb25MYXllcl0gcG9zaXRpb25dOworICAgIENHUmVjdCBkZXN0aW5hdGlvbkJv
dW5kcyA9IFtbY2FMYXllciBwcmVzZW50YXRpb25MYXllcl0gYm91bmRzXTsKKyAgICBDR1BvaW50
IGxheWVyQW5jaG9yID0gW2NhTGF5ZXIgYW5jaG9yUG9pbnRdOworICAgIENHUG9pbnQgaW5pdGlh
bFBvc2l0aW9uID0gQ0dQb2ludE1ha2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luaXRpYWxGcmFtZS54KCkgKyBtX2luaXRpYWxGcmFtZS53aWR0aCgpICog
bGF5ZXJBbmNob3IueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5pdGlhbEZyYW1lLnkoKSArIG1faW5pdGlhbEZyYW1lLmhlaWdodCgpICogbGF5ZXJBbmNo
b3IueSk7CisgICAgQ0FUcmFuc2Zvcm0zRCBzaHJpbmtUcmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNE
TWFrZVNjYWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtX2luaXRpYWxGcmFtZS53aWR0aCgp
KSAvIGRlc3RpbmF0aW9uQm91bmRzLnNpemUud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENHRmxvYXQ+
KG1faW5pdGlhbEZyYW1lLmhlaWdodCgpKSAvIGRlc3RpbmF0aW9uQm91bmRzLnNpemUuaGVpZ2h0
LCAxKTsKKyAgICBDQVRyYW5zZm9ybTNEIHNoaWZ0VHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1h
a2VUcmFuc2xhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24ueCAtIGRlc3RpbmF0aW9uUG9z
aXRpb24ueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBEcmF3aW5nIGlzIGZsaXBwZWQgaGVyZSwgYW5kIHNvIG11Y2gg
YmUgdGhlIHRyYW5zbGF0aW9uIHRyYW5zZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25Qb3Np
dGlvbi55IC0gaW5pdGlhbFBvc2l0aW9uLnksIDApOworICAgIENBVHJhbnNmb3JtM0QgZmluYWxU
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNEQ29uY2F0KHNocmlua1RyYW5zZm9ybSwgc2hpZnRUcmFu
c2Zvcm0pOworCisgICAgQ0FUcmFuc2Zvcm0zRCBpbml0aWFsVHJhbnNmb3JtID0gWyhDQUxheWVy
KilbY2FMYXllciBwcmVzZW50YXRpb25MYXllcl0gdHJhbnNmb3JtXTsKKworICAgIC8vIFVzZSBh
IENBQmFzaWNBbmltYXRpb24gaGVyZSBmb3IgdGhlIHpvb20gZWZmZWN0LiBXZSB3YW50IHRvIGJl
IG5vdGlmaWVkIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMKKyAgICAvLyBjb21wbGV0ZWQgYnkgd2F5
IG9mIHRoZSBDQUFuaW1hdGlvbiBkZWxlZ2F0ZS4KKyAgICBDQUJhc2ljQW5pbWF0aW9uKiB6b29t
QW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJ0cmFu
c2Zvcm0iXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVX
aXRoQ0FUcmFuc2Zvcm0zRDppbml0aWFsVHJhbnNmb3JtXV07CisgICAgW3pvb21BbmltYXRpb24g
c2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmZpbmFsVHJhbnNmb3Jt
XV07CisgICAgW3pvb21BbmltYXRpb24gc2V0RGVsZWdhdGU6bV9leGl0RnVsbFNjcmVlbkxpc3Rl
bmVyLmdldCgpXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07Cisg
ICAgW3pvb21BbmltYXRpb24gc2V0VGltaW5nRnVuY3Rpb246W0NBTWVkaWFUaW1pbmdGdW5jdGlv
biBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0XV07
CisgICAgW3pvb21BbmltYXRpb24gc2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CisK
KyAgICAvLyBEaXNhYmxlIGltcGxpY2l0IGFuaW1hdGlvbnMgYW5kIHNldCB0aGUgbGF5ZXIncyB0
cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gaXRzIGZpbmFsIHN0YXRlLgorICAgIFtDQVRyYW5zYWN0
aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwor
ICAgIFtjYUxheWVyIGFkZEFuaW1hdGlvbjp6b29tQW5pbWF0aW9uIGZvcktleTpAInpvb20iXTsK
KyAgICBbY2FMYXllciBzZXRUcmFuc2Zvcm06ZmluYWxUcmFuc2Zvcm1dOworICAgIFtDQVRyYW5z
YWN0aW9uIGNvbW1pdF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85539</attachid>
            <date>2011-03-11 14:46:00 -0800</date>
            <delta_ts>2011-03-11 17:05:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56220-20110311144558.patch</filename>
            <type>text/plain</type>
            <size>25875</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZDI1Njc1Zjc4YTY4ZDU1
NWQ4NDIyMWMyYTQ0NzAxYTdmOTM4NmMyLi4wNTg2ZjM2MzE3MDhiMzhmY2M1MDAzMjE4MWE3YjIz
M2FiNjZlNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzYgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBZGQgZnVsbCBzY3JlZW4gYW5pbWF0aW9u
IGNvZGUgdG8gV2ViRnVsbFNjcmVlbk1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjIyMAorCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDogTW92ZSBmdW5jdGlvbnMgaW50byB2aXJ0
dWFsIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+
V2ViRnVsbFNjcmVlbk1hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFJlbW92ZSBBU1NFUlRzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEVudGVyRnVsbFNjcmVl
bik6IFNldCB0aGUgZnVsbCBzY3JlZW4gcmVuZGVyZXIncyBiYWNrZ3JvdW5kIGNvbG9yLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsU2NyZWVuKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1
bGxTY3JlZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OmRpZEV4aXRGdWxsU2NyZWVuKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBpbml0V2l0
aE1hbmFnZXI6V2ViS2l0OjpiZWdhbjpmaW5pc2hlZDpdKTogTGlzdGVuZXIgZm9yIENBQW5pbWF0
aW9ucy4KKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBh
bmltYXRpb25EaWRTdGFydDpdKTogQWRkZWQuCisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyQW5pbWF0aW9uTGlzdGVuZXIgYW5pbWF0aW9uRGlkU3RvcDpmaW5pc2hlZDpdKTogQWRkZWQu
CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIgaW52YWxp
ZGF0ZV0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNy
ZWF0ZSk6IE5vdyBjcmVhdGVzIGEgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjp+V2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWM6OnNldFJvb3RGdWxsU2NyZWVuTGF5ZXIpOiBTZXQgdXAgdGhlIHJlbW90
ZSBsYXllciBob3N0LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6
YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24pOiBDcmVhdGUgYSBDQVRyYW5zZm9ybTNECisg
ICAgICAgICAgICB3aGljaCB3aWxsIGFuaW1hdGUgdGhlIGZ1bGwgc2NyZWVuIHJlbmRlcmVyIGZy
b20gaXRzIGluaXRpYWwgcG9zaXRpb24gdG8gaXRzIGZpbmFsIG9uZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24p
OiBEaXR0by4KKworMjAxMS0wMy0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBIb29rIHVw
IG5ldyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZ1bmN0aW9ucyB0byBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjIxOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2U1ZWEwZDgwY2FlOWI3MGQ1OGIzYzM3YzVkMGUxYWFhYzU4
ZWY4OS4uYmQzYThkYjQ4ZTc1OTM1MzI5NDE1ZTYwMGFhM2NiNDQzYzBmMzNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ5
LDYgKzc0OSw3IEBACiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oICovOyB9OwogCQlDRENBODVENTEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RD
QTg1RUUxMzJBRDcwMTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVERTEz
MkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsK
KwkJQ0RDQTg2MDMxMzJBREMwNTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1RTYx
MzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tICovOyB9OwogCQlE
M0I5NDg0NjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJQb3B1cE1lbnUuY3BwICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkg
LyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07
CiAJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CkBAIC0xNjE2LDYg
KzE2MTcsOCBAQAogCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
Q0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lP
S2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1REUx
MzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRENBODVFNTEzMkFEMzMw
MDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RDQTg1RTYxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RnVsbFNjcmVlbk1hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQz
Qjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA1
OSw2ICszMDYyLDcgQEAKIAkJQ0Q3M0JBM0QxMzFBMkEyMTAwRUVERUQyIC8qIEZ1bGxTY3JlZW4g
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQ0E4NUU0
MTMyQUQzMzAwMEU5NjFERiAvKiBtYWMgKi8sCiAJCQkJQ0Q3M0JBMzcxMzFBMjlGRTAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCAqLywKIAkJCQlDRDczQkEzODEzMUEyOUZFMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCAqLywKIAkJCQlDRDczQkEzOTEzMUEyOUZF
MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBAIC0zMDY2
LDYgKzMwNzAsMTYgQEAKIAkJCW5hbWUgPSBGdWxsU2NyZWVuOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJQ0RDQTg1RTQxMzJBRDMzMDAwRTk2MURGIC8qIG1hYyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RDQTg1RTUxMzJBRDMz
MDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi8sCisJCQkJQ0RDQTg1RTYx
MzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tICovLAorCQkJKTsK
KwkJCW5hbWUgPSBtYWM7CisJCQlwYXRoID0gRnVsbFNjcmVlbi9tYWM7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDAzNCw2ICs0MDQ4LDcgQEAK
IAkJCQlDRDZGNzVGNDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRENBODVDODEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQ0E4NUVF
MTMyQUQ3MDEwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RDQTg2MDMxMzJBREMwNTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRl
eCBkNTJiMjI1YmE0YWVkY2UxNjAxN2YyNTk3YzJkY2ZmNWJkMjFkODJmLi42YWQ1YWFmY2YxNjg1
YmFkMDEyYzQxMGJlZmFlM2MzYjgwNTQ3NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTQwLDE1ICs0MSwxNSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2Vi
RnVsbFNjcmVlbk1hbmFnZXI+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSog
cGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBh
Z2UpKTsKLX0KLQogV2ViRnVsbFNjcmVlbk1hbmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdl
YlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKIHsKIH0KKyAgICAKK1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIoKQoreworICAgIAorfQogCiBXZWJDb3Jl
OjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZWxlbWVudCgpIAogeyAKQEAgLTgwLDYg
KzgxLDggQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkK
IHsKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgQVNTRVJUKG1fZWxlbWVudCA9PSBlbGVtZW50
KTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OkV4aXRGdWxsU2NyZWVuKCkpOwogfQogCkBAIC0xMDIsMTAgKzEwNSw2IEBAIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXI6OmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21w
bGV0ZWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpGaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGNvbXBsZXRlZCkpOwogfQot
Ci12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotfQogICAgIAogSW50UmVjdCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6Z2V0RnVsbFNjcmVlblJlY3QoKQogewpAQCAtMTE4LDMzICsxMTcsMzAgQEAg
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAg
QVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxs
RW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpOworICAgIG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+c2V0RnVsbFNjcmVlblJlbmRlcmVyQmFja2dyb3VuZENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEVudGVy
RnVsbFNjcmVlbigpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9lbGVtZW50LT5k
b2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZWxlbWVudC5n
ZXQoKSk7CisgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRGdWxsU2NyZWVuUmVuZGVyZXJC
YWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKICAg
ICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQobV9lbGVtZW50LmdldCgpKTsKKyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxT
Y3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogfQogCiB2
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgQVNT
RVJUKG1fZWxlbWVudCk7CiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQobV9lbGVtZW50LmdldCgpKTsKKyAgICBtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xvcihDb2xvcjo6Ymxh
Y2spOwogfQogCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpiZWdpbkVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6YmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLX0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKaW5kZXggNmU3
N2UwNGMwMDJmZjQ1ZTQ4MjIyMjNmMTg0YmU1ZGQyNjlmMDE5MS4uNWFjMGEwODkxMWVlMDM2MGYw
Yjk1M2IzNmEzNzI0YTBhYWZhZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKQEAgLTUwLDYg
KzUwLDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAg
ICB2aXJ0dWFsIH5XZWJGdWxsU2NyZWVuTWFuYWdlcigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKIApAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCk7CiAgICAg
dm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBmaW5pc2hlZEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKTsKLSAgICB2b2lkIHNldFJvb3RG
dWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAK
ICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCk7CiAKQEAgLTcxLDggKzcyLDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCB3aWxsRXhp
dEZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgdm9pZCBi
ZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbik7Ci0gICAgdm9pZCBi
ZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJh
dGlvbikgPSAwOwogICAgIFdlYkNvcmU6OkludFJlY3QgZ2V0RnVsbFNjcmVlblJlY3QoKTsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMv
V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzU5ODQ2
OTFiYmJkMDE0ZDMwNDJiMDU5YTlmYmM4MDI3MmQ2ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjX2gKKyNkZWZpbmUgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWNfaAorCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorCisjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCisj
aW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlci5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0ludFJl
Y3QuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19XS0NB
UmVtb3RlTGF5ZXJDbGllbnRSZWYqIFdLQ0FSZW1vdGVMYXllckNsaWVudFJlZjsKK3R5cGVkZWYg
c3RydWN0IG9iamNfb2JqZWN0ICppZDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWFjIDogcHVibGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlck1hYz4gY3Jl
YXRlKFdlYlBhZ2UqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRSb290RnVsbFNjcmVlbkxheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKworcHJpdmF0ZToKKyAgICBXZWJGdWxsU2NyZWVu
TWFuYWdlck1hYyhXZWJQYWdlKik7CisgICAgdmlydHVhbCB+V2ViRnVsbFNjcmVlbk1hbmFnZXJN
YWMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihm
bG9hdCBkdXJhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oZmxvYXQgZHVyYXRpb24pOworCisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI+IG1fcm9vdExheWVyOworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fZnVsbFNjcmVl
blJvb3RMYXllcjsKKyAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKKyAg
ICBSZXRhaW5QdHI8V0tDQVJlbW90ZUxheWVyQ2xpZW50UmVmPiBtX3JlbW90ZUxheWVyQ2xpZW50
OworICAgIFJldGFpblB0cjxpZD4gbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lcjsKKyAgICBSZXRh
aW5QdHI8aWQ+IG1fZXhpdEZ1bGxTY3JlZW5MaXN0ZW5lcjsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
TWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9t
YWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
ZWQ3MTcyZWQ4MTgxMjUxOWFlZTA3MWYyMDBmMTdiNTFmNGUyYjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCIKKworI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKworI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgorI2ltcG9ydCAiTGF5ZXJU
cmVlQ29udGV4dC5oIgorI2ltcG9ydCAiTGF5ZXJUcmVlSG9zdE1hYy5oIgorI2ltcG9ydCAiTWVz
c2FnZUlELmgiCisjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
KyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+
CisjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3R5cGVkZWYgdm9pZCAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6KkFu
aW1hdGlvbkJlZ2FuRnVuY3Rpb24pKCk7Cit0eXBlZGVmIHZvaWQgKFdlYktpdDo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OipBbmltYXRpb25GaW5pc2hlZEZ1bmN0aW9uKShib29sKTsKKworQGludGVy
ZmFjZSBXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIDogTlNPYmplY3Qgewor
ICAgIFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXIqIF9tYW5hZ2VyOworICAgIEFuaW1hdGlv
bkJlZ2FuRnVuY3Rpb24gX2JlZ2FuOworICAgIEFuaW1hdGlvbkZpbmlzaGVkRnVuY3Rpb24gX2Zp
bmlzaGVkOworfQorLSAoaWQpaW5pdFdpdGhNYW5hZ2VyOihXZWJLaXQ6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyKiltYW5hZ2VyIGJlZ2FuOihBbmltYXRpb25CZWdhbkZ1bmN0aW9uKWJlZ2FuIGZpbmlz
aGVkOihBbmltYXRpb25GaW5pc2hlZEZ1bmN0aW9uKWZpbmlzaGVkOworLSAodm9pZClhbmltYXRp
b25EaWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltOworLSAodm9pZClhbmltYXRpb25EaWRTdG9w
OihDQUFuaW1hdGlvbiAqKWFuaW0gZmluaXNoZWQ6KEJPT0wpZmxhZzsKKy0gKHZvaWQpaW52YWxp
ZGF0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0
aW9uTGlzdGVuZXIKKy0gKGlkKWluaXRXaXRoTWFuYWdlcjooV2ViS2l0OjpXZWJGdWxsU2NyZWVu
TWFuYWdlciopbWFuYWdlciBiZWdhbjooQW5pbWF0aW9uQmVnYW5GdW5jdGlvbiliZWdhbiBmaW5p
c2hlZDooQW5pbWF0aW9uRmluaXNoZWRGdW5jdGlvbilmaW5pc2hlZAoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X21hbmFnZXIgPSBtYW5hZ2VyOworICAgIF9iZWdhbiA9IGJlZ2FuOworICAgIF9maW5pc2hlZCA9
IGZpbmlzaGVkOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWFuaW1hdGlvbkRpZFN0
YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW0KK3sKKyAgICBpZiAoX21hbmFnZXIgJiYgX2JlZ2FuKQor
ICAgICAgICAoX21hbmFnZXItPipfYmVnYW4pKCk7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlk
U3RvcDooQ0FBbmltYXRpb24gKilhbmltIGZpbmlzaGVkOihCT09MKWZsYWcKK3sKKyAgICBpZiAo
X21hbmFnZXIgJiYgX2ZpbmlzaGVkKQorICAgICAgICAoX21hbmFnZXItPipfZmluaXNoZWQpKGZs
YWcpOworfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBfbWFuYWdlciA9IE5VTEw7Cisg
ICAgX2JlZ2FuID0gMDsKKyAgICBfZmluaXNoZWQgPSAwOworfQorQGVuZAorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlcj4gV2ViRnVsbFNjcmVl
bk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlck1hYzo6Y3JlYXRlKHBhZ2UpOworfQorCitQYXNzUmVmUHRyPFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjPiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Y3JlYXRlKFdlYlBhZ2UqIHBh
Z2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhw
YWdlKSk7Cit9CisKK1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpXZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYyhXZWJQYWdlKiBwYWdlKQorICAgIDogV2ViRnVsbFNjcmVlbk1hbmFnZXIocGFnZSkKK3sK
KyAgICBtX2VudGVyRnVsbFNjcmVlbkxpc3RlbmVyLmFkb3B0TlMoW1tXZWJGdWxsU2NyZWVuTWFu
YWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aE1hbmFnZXI6dGhpcyBiZWdhbjom
V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uIGZp
bmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5B
bmltYXRpb25dKTsKKyAgICBtX2V4aXRGdWxsU2NyZWVuTGlzdGVuZXIuYWRvcHROUyhbW1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoTWFuYWdlcjp0
aGlzIGJlZ2FuOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6YmVnYW5FeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbiBmaW5pc2hlZDomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmZpbmlzaGVkRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25dKTsKK30KKworV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6On5XZWJG
dWxsU2NyZWVuTWFuYWdlck1hYygpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSk7
CisgICAgW21fZW50ZXJGdWxsU2NyZWVuTGlzdGVuZXIuZ2V0KCkgaW52YWxpZGF0ZV07CisgICAg
W21fZXhpdEZ1bGxTY3JlZW5MaXN0ZW5lci5nZXQoKSBpbnZhbGlkYXRlXTsKK30KKwordm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpH
cmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBpZiAobV9mdWxsU2NyZWVuUm9vdExheWVyID09
IGxheWVyKQorICAgICAgICByZXR1cm47CisgICAgbV9mdWxsU2NyZWVuUm9vdExheWVyID0gbGF5
ZXI7CisKKyAgICBpZiAoIW1fcm9vdExheWVyKSB7CisgICAgICAgIG1hY2hfcG9ydF90IHNlcnZl
clBvcnQgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQo
KTsKKyAgICAgICAgbV9yZW1vdGVMYXllckNsaWVudCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudE1h
a2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0KTsKKworICAgICAgICBtX3Jvb3RMYXllciA9IEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZShOVUxMKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fcm9v
dExheWVyLT5zZXROYW1lKCJMYXllclRyZWVIb3N0IHJvb3QgbGF5ZXIiKTsKKyNlbmRpZgorICAg
ICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICAgICAgbV9yb290
TGF5ZXItPnNldFNpemUoZ2V0RnVsbFNjcmVlblJlY3QoKS5zaXplKCkpOworCisgICAgICAgIFtt
X3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOworICAg
ICAgICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRTZXRMYXllcihtX3JlbW90ZUxheWVyQ2xpZW50Lmdl
dCgpLCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVD
b250ZXh0LmNvbnRleHRJRCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudEdldENsaWVudElkKG1fcmVt
b3RlTGF5ZXJDbGllbnQuZ2V0KCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
bV9sYXllclRyZWVDb250ZXh0KSk7CisgICAgfQorCisgICAgbV9yb290TGF5ZXItPnJlbW92ZUFs
bENoaWxkcmVuKCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuUm9vdExheWVyKQorICAgICAgICBt
X3Jvb3RMYXllci0+YWRkQ2hpbGQobV9mdWxsU2NyZWVuUm9vdExheWVyKTsKKworICAgIG1fcm9v
dExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6
OmJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQoreworICAgIEFT
U0VSVChtX2VsZW1lbnQpOworICAgIEFTU0VSVChtX2Z1bGxTY3JlZW5Sb290TGF5ZXIpOworCisg
ICAgSW50UmVjdCBkZXN0aW5hdGlvbkZyYW1lID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsKKyAgICBt
X2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlclNpemUoZGVzdGluYXRp
b25GcmFtZS5zaXplKCkpOworICAgIG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52
aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CisKKyAgICAv
LyBGSVhNRTogT25jZSB3ZSBnYWluIHRoZSBhYmlsaXR5IHRvIGRvIG5hdGl2ZSBXZWJLaXQgYW5p
bWF0aW9ucyBvZiBnZW5lcmF0ZWQKKyAgICAvLyBjb250ZW50LCB0aGlzIGNhbiBjaGFuZ2UgdG8g
dXNlIHRoZW0uICBNZWFud2hpbGUsIHdlJ2xsIGhhdmUgdG8gYW5pbWF0ZSB0aGUKKyAgICAvLyBD
QUxheWVyIGRpcmVjdGx5OgorICAgIENBTGF5ZXIqIGNhTGF5ZXIgPSBtX2Z1bGxTY3JlZW5Sb290
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKworICAgIC8vIENyZWF0ZSBhIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCB0aGF0IHdpbGwgdHJhbnNmb3JtIHRoZSByZW5kZXJlciBsYXllciBzdWNoIHRoYXQK
KyAgICAvLyB0aGUgZnVsbHNjcmVlbiBlbGVtZW50IGFwcGVhcnMgdG8gbW92ZSBmcm9tIGl0cyBz
dGFydGluZyBwb3NpdGlvbiBhbmQgc2l6ZSB0byBpdHMKKyAgICAvLyBmaW5hbCBvbmUuCisgICAg
Q0dQb2ludCBkZXN0aW5hdGlvblBvc2l0aW9uID0gW2NhTGF5ZXIgcG9zaXRpb25dOworICAgIENH
UG9pbnQgbGF5ZXJBbmNob3IgPSBbY2FMYXllciBhbmNob3JQb2ludF07CisgICAgQ0dQb2ludCBp
bml0aWFsUG9zaXRpb24gPSBDR1BvaW50TWFrZSgKKyAgICAgICAgbV9pbml0aWFsRnJhbWUueCgp
ICsgbV9pbml0aWFsRnJhbWUud2lkdGgoKSAqIGxheWVyQW5jaG9yLngsCisgICAgICAgIG1faW5p
dGlhbEZyYW1lLnkoKSArIG1faW5pdGlhbEZyYW1lLmhlaWdodCgpICogbGF5ZXJBbmNob3IueSk7
CisgICAgQ0FUcmFuc2Zvcm0zRCBzaHJpbmtUcmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNj
YWxlKAorICAgICAgICBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtX2luaXRpYWxGcmFtZS53aWR0aCgp
KSAvIGRlc3RpbmF0aW9uRnJhbWUud2lkdGgoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obV9pbml0aWFsRnJhbWUuaGVpZ2h0KCkpIC8gZGVzdGluYXRpb25GcmFtZS5oZWlnaHQoKSwg
MSk7CisgICAgQ0FUcmFuc2Zvcm0zRCBzaGlmdFRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtl
VHJhbnNsYXRpb24oCisgICAgICAgIGluaXRpYWxQb3NpdGlvbi54IC0gZGVzdGluYXRpb25Qb3Np
dGlvbi54LAorICAgICAgICAvLyBEcmF3aW5nIGlzIGZsaXBwZWQgaGVyZSwgYW5kIHNvIG11Y2gg
YmUgdGhlIHRyYW5zbGF0aW9uIHRyYW5zZm9ybWF0aW9uCisgICAgICAgIGRlc3RpbmF0aW9uUG9z
aXRpb24ueSAtIGluaXRpYWxQb3NpdGlvbi55LCAwKTsKKyAgICBDQVRyYW5zZm9ybTNEIGZpbmFs
VHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRENvbmNhdChzaHJpbmtUcmFuc2Zvcm0sIHNoaWZ0VHJh
bnNmb3JtKTsKKworICAgIC8vIFVzZSBhIENBQmFzaWNBbmltYXRpb24gaGVyZSBmb3IgdGhlIHpv
b20gZWZmZWN0LiBXZSB3YW50IHRvIGJlIG5vdGlmaWVkIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMK
KyAgICAvLyBjb21wbGV0ZWQgYnkgd2F5IG9mIHRoZSBDQUFuaW1hdGlvbiBkZWxlZ2F0ZS4KKyAg
ICBDQUJhc2ljQW5pbWF0aW9uKiB6b29tQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5p
bWF0aW9uV2l0aEtleVBhdGg6QCJ0cmFuc2Zvcm0iXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXRG
cm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpmaW5hbFRyYW5zZm9ybV1d
OworICAgIFt6b29tQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFu
c2Zvcm0zRDpDQVRyYW5zZm9ybTNESWRlbnRpdHldXTsKKyAgICBbem9vbUFuaW1hdGlvbiBzZXRE
ZWxlZ2F0ZTptX2VudGVyRnVsbFNjcmVlbkxpc3RlbmVyLmdldCgpXTsKKyAgICBbem9vbUFuaW1h
dGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07CisgICAgW3pvb21BbmltYXRpb24gc2V0VGltaW5n
RnVuY3Rpb246W0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlh
VGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0XV07CisgICAgW3pvb21BbmltYXRpb24gc2V0Rmls
bE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CisKKyAgICAvLyBEaXNhYmxlIGltcGxpY2l0IGFu
aW1hdGlvbnMgYW5kIHNldCB0aGUgbGF5ZXIncyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gaXRz
IGZpbmFsIHN0YXRlLgorICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2Fj
dGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgIFtjYUxheWVyIGFkZEFuaW1hdGlvbjp6
b29tQW5pbWF0aW9uIGZvcktleTpAInpvb20iXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OworfQorCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpiZWdpbkV4aXRGdWxsU2NyZWVu
QW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQoreworICAgIEFTU0VSVChtX2VsZW1lbnQpOworICAg
IEFTU0VSVChtX2Z1bGxTY3JlZW5Sb290TGF5ZXIpOworCisgICAgSW50UmVjdCBkZXN0aW5hdGlv
bkZyYW1lID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsKKyAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PnNldEZ1bGxTY3JlZW5SZW5kZXJlclNpemUoZGVzdGluYXRpb25GcmFtZS5zaXplKCkpOworICAg
IG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGlu
Z1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSB3ZSBnYWlu
IHRoZSBhYmlsaXR5IHRvIGRvIG5hdGl2ZSBXZWJLaXQgYW5pbWF0aW9ucyBvZiBnZW5lcmF0ZWQK
KyAgICAvLyBjb250ZW50LCB0aGlzIGNhbiBjaGFuZ2UgdG8gdXNlIHRoZW0uICBNZWFud2hpbGUs
IHdlJ2xsIGhhdmUgdG8gYW5pbWF0ZSB0aGUKKyAgICAvLyBDQUxheWVyIGRpcmVjdGx5OgorICAg
IENBTGF5ZXIqIGNhTGF5ZXIgPSBtX2Z1bGxTY3JlZW5Sb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KTsKKworICAgIC8vIENyZWF0ZSBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB0aGF0IHdpbGwgdHJh
bnNmb3JtIHRoZSByZW5kZXJlciBsYXllciBzdWNoIHRoYXQKKyAgICAvLyB0aGUgZnVsbHNjcmVl
biBlbGVtZW50IGFwcGVhcnMgdG8gbW92ZSBmcm9tIGl0cyBzdGFydGluZyBwb3NpdGlvbiBhbmQg
c2l6ZSB0byBpdHMKKyAgICAvLyBmaW5hbCBvbmUuCisgICAgQ0dQb2ludCBkZXN0aW5hdGlvblBv
c2l0aW9uID0gWyhDQUxheWVyKilbY2FMYXllciBwcmVzZW50YXRpb25MYXllcl0gcG9zaXRpb25d
OworICAgIENHUmVjdCBkZXN0aW5hdGlvbkJvdW5kcyA9IFtbY2FMYXllciBwcmVzZW50YXRpb25M
YXllcl0gYm91bmRzXTsKKyAgICBDR1BvaW50IGxheWVyQW5jaG9yID0gW2NhTGF5ZXIgYW5jaG9y
UG9pbnRdOworICAgIENHUG9pbnQgaW5pdGlhbFBvc2l0aW9uID0gQ0dQb2ludE1ha2UoCisgICAg
ICAgIG1faW5pdGlhbEZyYW1lLngoKSArIG1faW5pdGlhbEZyYW1lLndpZHRoKCkgKiBsYXllckFu
Y2hvci54LAorICAgICAgICBtX2luaXRpYWxGcmFtZS55KCkgKyBtX2luaXRpYWxGcmFtZS5oZWln
aHQoKSAqIGxheWVyQW5jaG9yLnkpOworICAgIENBVHJhbnNmb3JtM0Qgc2hyaW5rVHJhbnNmb3Jt
ID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZSgKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
bV9pbml0aWFsRnJhbWUud2lkdGgoKSkgLyBkZXN0aW5hdGlvbkJvdW5kcy5zaXplLndpZHRoLAor
ICAgICAgICBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtX2luaXRpYWxGcmFtZS5oZWlnaHQoKSkgLyBk
ZXN0aW5hdGlvbkJvdW5kcy5zaXplLmhlaWdodCwgMSk7CisgICAgQ0FUcmFuc2Zvcm0zRCBzaGlm
dFRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oCisgICAgICAgIGluaXRp
YWxQb3NpdGlvbi54IC0gZGVzdGluYXRpb25Qb3NpdGlvbi54LAorICAgICAgICAvLyBEcmF3aW5n
IGlzIGZsaXBwZWQgaGVyZSwgYW5kIHNvIG11c3QgYmUgdGhlIHRyYW5zbGF0aW9uIHRyYW5zZm9y
bWF0aW9uCisgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24ueSAtIGluaXRpYWxQb3NpdGlvbi55
LCAwKTsKKyAgICBDQVRyYW5zZm9ybTNEIGZpbmFsVHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRENv
bmNhdChzaHJpbmtUcmFuc2Zvcm0sIHNoaWZ0VHJhbnNmb3JtKTsKKworICAgIENBVHJhbnNmb3Jt
M0QgaW5pdGlhbFRyYW5zZm9ybSA9IFsoQ0FMYXllciopW2NhTGF5ZXIgcHJlc2VudGF0aW9uTGF5
ZXJdIHRyYW5zZm9ybV07CisKKyAgICAvLyBVc2UgYSBDQUJhc2ljQW5pbWF0aW9uIGhlcmUgZm9y
IHRoZSB6b29tIGVmZmVjdC4gV2Ugd2FudCB0byBiZSBub3RpZmllZCB0aGF0IHRoZSBhbmltYXRp
b24gaGFzCisgICAgLy8gY29tcGxldGVkIGJ5IHdheSBvZiB0aGUgQ0FBbmltYXRpb24gZGVsZWdh
dGUuCisgICAgQ0FCYXNpY0FuaW1hdGlvbiogem9vbUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAidHJhbnNmb3JtIl07CisgICAgW3pvb21BbmltYXRp
b24gc2V0RnJvbVZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6aW5pdGlhbFRy
YW5zZm9ybV1dOworICAgIFt6b29tQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVX
aXRoQ0FUcmFuc2Zvcm0zRDpmaW5hbFRyYW5zZm9ybV1dOworICAgIFt6b29tQW5pbWF0aW9uIHNl
dERlbGVnYXRlOm1fZXhpdEZ1bGxTY3JlZW5MaXN0ZW5lci5nZXQoKV07CisgICAgW3pvb21Bbmlt
YXRpb24gc2V0RHVyYXRpb246ZHVyYXRpb25dOworICAgIFt6b29tQW5pbWF0aW9uIHNldFRpbWlu
Z0Z1bmN0aW9uOltDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTprQ0FNZWRp
YVRpbWluZ0Z1bmN0aW9uRWFzZUluRWFzZU91dF1dOworICAgIFt6b29tQW5pbWF0aW9uIHNldEZp
bGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworCisgICAgLy8gRGlzYWJsZSBpbXBsaWNpdCBh
bmltYXRpb25zIGFuZCBzZXQgdGhlIGxheWVyJ3MgdHJhbnNmb3JtYXRpb24gbWF0cml4IHRvIGl0
cyBmaW5hbCBzdGF0ZS4KKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICBbY2FMYXllciBhZGRBbmltYXRpb246
em9vbUFuaW1hdGlvbiBmb3JLZXk6QCJ6b29tIl07CisgICAgW2NhTGF5ZXIgc2V0VHJhbnNmb3Jt
OmZpbmFsVHJhbnNmb3JtXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
</data>
<flag name="review"
          id="77681"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>