<?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>107397</bug_id>
          
          <creation_ts>2013-01-20 04:34:31 -0800</creation_ts>
          <short_desc>[Efl][WebGL] Add better support to track and free XResources.</short_desc>
          <delta_ts>2013-01-31 04:49:00 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kalyan">kalyan.kondapally</reporter>
          <assigned_to name="Kalyan">kalyan.kondapally</assigned_to>
          <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811607</commentid>
    <comment_count>0</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 04:34:31 -0800</bug_when>
    <thetext>We leak Memory during config selection as we dont free temp allocated visuals, config etc. It would be better to have some thing like a scoped class, this would free memory when class goes out of scope or when assigned a different value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811615</commentid>
    <comment_count>1</comment_count>
      <attachid>183669</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 06:03:09 -0800</bug_when>
    <thetext>Created attachment 183669
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811626</commentid>
    <comment_count>2</comment_count>
      <attachid>183674</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 09:15:10 -0800</bug_when>
    <thetext>Created attachment 183674
patchv2

removed usused member varibles in X11WindowResources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811740</commentid>
    <comment_count>3</comment_count>
      <attachid>183674</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2013-01-20 19:38:18 -0800</bug_when>
    <thetext>Comment on attachment 183674
patchv2

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Covered by existing WebGL tests.

This is probably true but WebGL tests are not enabled for EFL on the bot so I think it is about time to hold on with re-factoring like this and enable the WebGL tests first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811752</commentid>
    <comment_count>4</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 20:31:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 183674 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183674&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Covered by existing WebGL tests.
&gt; 
&gt; This is probably true but WebGL tests are not enabled for EFL on the bot so I think it is about time to hold on with re-factoring like this and enable the WebGL tests first.

I do agree with you but I don&apos;t see this as refactoring but rather part of effort in fixing things to enable the layout tests in our port. I was atleast having constant WebProcess crashes(doing double deletions sometimes) without these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811766</commentid>
    <comment_count>5</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 21:11:40 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 183674 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183674&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Covered by existing WebGL tests.
&gt; 
&gt; This is probably true but WebGL tests are not enabled for EFL on the bot so I think it is about time to hold on with re-factoring like this and enable the WebGL tests first.

On side note we need 106878,107397,107178 fixed before trying to enable WebGL tests (atleast ones under fast/canvas/webgl). Atleast, I needed these before I could run the tests without any random crashes.

I will create a separate issue to enable to the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811771</commentid>
    <comment_count>6</comment_count>
      <attachid>183703</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-20 21:19:24 -0800</bug_when>
    <thetext>Created attachment 183703
patchv3

updated the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812414</commentid>
    <comment_count>7</comment_count>
      <attachid>183837</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-21 15:20:12 -0800</bug_when>
    <thetext>Created attachment 183837
patchv4

rebased patch. Not marking it for review yet. Layout tests with latest source seems stable even without this patch and don&apos;t see any de-allocation issues. The patch only fixes memory leaks and thus could be considered after enabling them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814044</commentid>
    <comment_count>8</comment_count>
      <attachid>183837</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-23 02:40:06 -0800</bug_when>
    <thetext>Comment on attachment 183837
patchv4

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

&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.h:49
&gt; +struct ScopedXResource {

This is not needed. You can have OwnPtr with a specialized template, like GTK/Cairo does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817181</commentid>
    <comment_count>9</comment_count>
      <attachid>184862</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-26 07:03:20 -0800</bug_when>
    <thetext>Created attachment 184862
patchv5

Changed name of ScopedXResource to ScopedPtrX11 and moved it to a separate header. Cannot use OwnPtr here with GLXFBConfig, as it is a pointer. 
i.e it is defined as typedef struct __GLXFBConfigRec *GLXFBConfig. One way would have been to handle this case separately but as we would need this change (ScopedPtrX11) for it, so I let it manage all the X Resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818167</commentid>
    <comment_count>10</comment_count>
      <attachid>185079</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-28 15:10:52 -0800</bug_when>
    <thetext>Created attachment 185079
patchv6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820030</commentid>
    <comment_count>11</comment_count>
      <attachid>185079</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-30 03:17:04 -0800</bug_when>
    <thetext>Comment on attachment 185079
patchv6

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        We leak Memory during config selection as we dont free temp

temp -&gt; temporary

&gt; Source/WebCore/ChangeLog:35
&gt; +        Calls XFree on pointer to memory allocated by X when the class goes out of scope.

Add some short explanation on why this was needed rather than using OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821158</commentid>
    <comment_count>12</comment_count>
      <attachid>185694</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-31 00:04:06 -0800</bug_when>
    <thetext>Created attachment 185694
patchforlanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821177</commentid>
    <comment_count>13</comment_count>
      <attachid>185698</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-31 00:18:11 -0800</bug_when>
    <thetext>Created attachment 185698
patchforlanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821231</commentid>
    <comment_count>14</comment_count>
      <attachid>185698</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-31 01:03:52 -0800</bug_when>
    <thetext>Comment on attachment 185698
patchforlanding

Attachment 185698 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16264129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821309</commentid>
    <comment_count>15</comment_count>
      <attachid>185731</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-31 03:00:54 -0800</bug_when>
    <thetext>Created attachment 185731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821394</commentid>
    <comment_count>16</comment_count>
      <attachid>185731</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 04:48:55 -0800</bug_when>
    <thetext>Comment on attachment 185731
Patch

Clearing flags on attachment: 185731

Committed r141404: &lt;http://trac.webkit.org/changeset/141404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821395</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 04:49:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183669</attachid>
            <date>2013-01-20 06:03:09 -0800</date>
            <delta_ts>2013-01-20 09:15:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>xleakfix.patch</filename>
            <type>text/plain</type>
            <size>17848</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1ZTYxM2IuLjljYTg3NGUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEz
LTAxLTIwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRWZsXVtXZWJHTF0gQWRkIGJldHRlciBzdXBwb3J0IHRvIHRyYWNrIGFuZCBm
cmVlIFhSZXNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDczOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdMIHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1Nl
bGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6R0xYQ29uZmln
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnZpc3VhbElu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnBCdWZmZXJDb250ZXh0
Q29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpzdXJmYWNlQ29u
dGV4dENvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6Y3JlYXRl
U3VyZmFjZUNvbmZpZyk6CisgICAgICAgIChHTFhDb25maWdTZWxlY3Rvcik6CisgICAgICAgIFJl
bW92ZWQgVmlzdWFsSW5mbyBhcyBtZW1iZXIgdmFyaWFibGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5k
b3dSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93Ojp+
WDExT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRv
dzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oOgor
ICAgICAgICBSZW1vdmVkIHVudXNlZCBjb2RlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2NvcGVkWFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlZFhSZXNvdXJjZTo6U2NvcGVkWFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZFhSZXNvdXJjZTo6flNjb3BlZFhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZWRYUmVzb3VyY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRYUmVz
b3VyY2U6Om9wZXJhdG9yIFQqKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFhSZXNvdXJjZTo6
b3BlcmF0b3ItPik6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRYUmVzb3VyY2U6OmdldCk6Cisg
ICAgICAgIChYMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICBDYWxscyBYRnJlZSBvbiAgcG9p
bnRlciB0byBtZW1vcnkgYWxsb2NhdGVkIGJ5IFggd2hlbiB0aGUgY2xhc3MgZ29lcyBvdXQgb2Yg
c2NvcGUuCisKIDIwMTMtMDEtMTkgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFs
bHlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dlYkdMXSBSZWdyZXNzaW9uOiBXZWJHTCBD
b250ZW50IGlzIG5vdCBkcmF3biBhZnRlciByZXNpemluZyB0aGUgY2FudmFzLgpkaWZmIC0tZ2l0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNl
LmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3Vy
ZmFjZS5jcHAKaW5kZXggYjUyNGFiNS4uMjZkNTZhNSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCkBA
IC01NywxMiArNTcsNyBAQCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFu
c3BvcnRTdXJmYWNlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9uYXRp
dmVSZXNvdXJjZS0+c2V0VmlzdWFsSWQodmlzdWFsSWQpKSB7Ci0gICAgICAgIGRlc3Ryb3koKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNy
ZWF0ZU9mZlNjcmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUsIHZpc3VhbElkKTsKIAogICAgIGlm
ICghbV9idWZmZXJIYW5kbGUpIHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rv
ci5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25m
aWdTZWxlY3Rvci5oCmluZGV4IDdlMGNmYzAuLmY4ZDQyODQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaAor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZp
Z1NlbGVjdG9yLmgKQEAgLTM5LDcgKzM5LDYgQEAgcHVibGljOgogICAgIEdMWENvbmZpZ1NlbGVj
dG9yKERpc3BsYXkqIHhEaXNwbGF5LCBib29sIHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAg
ICAgICAgOiBtX3BidWZmZXJGQkNvbmZpZygwKQogICAgICAgICAsIG1fc3VyZmFjZUNvbnRleHRG
QkNvbmZpZygwKQotICAgICAgICAsIG1fdmlzdWFsSW5mbygwKQogICAgICAgICAsIG1fc2hhcmVk
RGlzcGxheSh4RGlzcGxheSkKICAgICAgICAgLCBtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbihz
dXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pCiAgICAgewpAQCAtNDksOSArNDgsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbygpIGNvbnN0Cisg
ICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlz
dWFsSW5mbzsKKyAgICAgICAgaWYgKCFzdXJmYWNlQ29udGV4dENvbmZpZygpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyht
X3NoYXJlZERpc3BsYXksIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyk7CiAgICAgfQogCiAgICAg
R0xYRkJDb25maWcgcEJ1ZmZlckNvbnRleHRDb25maWcoKQpAQCAtNjksMTAgKzcxLDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZp
Z3M7Ci0gICAgICAgICAgICBHTFhGQkNvbmZpZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1f
c2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVz
LCAmbnVtQXZhaWxhYmxlQ29uZmlncyk7CisgICAgICAgICAgICBTY29wZWRYUmVzb3VyY2U8R0xY
RkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0
U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdz
KSk7CiAgICAgICAgICAgICBpZiAobnVtQXZhaWxhYmxlQ29uZmlncykKICAgICAgICAgICAgICAg
ICBtX3BidWZmZXJGQkNvbmZpZyA9IHRlbXBbMF07Ci0gICAgICAgICAgICBYRnJlZSh0ZW1wKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBtX3BidWZmZXJGQkNvbmZpZzsKQEAgLTgwLDIz
ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIEdMWEZCQ29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmln
KCkKICAgICB7Ci0gICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKSB7Ci0gICAg
ICAgICAgICBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgICAgICAgICBHTFhf
TEVWRUwsIDAsCi0gICAgICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1df
QklULAotICAgICAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwgICBHTFhfUkdCQV9CSVQsCi0g
ICAgICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCi0gICAgICAgICAgICAgICAgR0xY
X0dSRUVOX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEs
Ci0gICAgICAgICAgICAgICAgR0xYX0FMUEhBX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAg
R0xYX0RFUFRIX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUs
IEdMWF9UUlVFX0NPTE9SLAotICAgICAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVl
LAotICAgICAgICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIG1f
c3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0ZUNvbmZpZyhhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykKKyAgICAgICAgICAg
IGNyZWF0ZVN1cmZhY2VDb25maWcoKTsKIAogICAgICAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4
dEZCQ29uZmlnOwogICAgIH0KQEAgLTEwOCw1NiArOTQsNTUgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBHTFhGQkNvbmZpZyBjcmVhdGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0
ZXNbXSkKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2VDb25maWcoKQogICAgIHsKLSAgICAgICAgaW50
IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgIG1fdmlzdWFsSW5mbyA9IDA7Ci0gICAgICAg
IEdMWEZCQ29uZmlnKiB0ZW1wID0gZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBE
ZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVD
b25maWdzKTsKKyAgICAgICAgc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CisgICAgICAgICAg
ICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRP
V19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JHQkFfQklULAorICAg
ICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCisgICAgICAgICAgICBHTFhfR1JFRU5fU0la
RSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAorICAgICAgICAgICAg
R0xYX0FMUEhBX1NJWkUsICAgIDEsCisgICAgICAgICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwK
KyAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBFLCBHTFhfVFJVRV9DT0xPUiwKKyAgICAgICAg
ICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAorICAgICAgICAgICAgTm9uZQorICAgICAgICB9
OwogCi0gICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncykKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKKyAgICAgICAgU2NvcGVkWFJl
c291cmNlPEdMWEZCQ29uZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxh
eSwgRGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxh
YmxlQ29uZmlncykpOwogCi0gICAgICAgIEdMWEZCQ29uZmlnIHNlbGVjdGVkQ29uZmlnID0gMDsK
LSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICBpZiAoIW51bUF2YWlsYWJsZUNv
bmZpZ3MpIHsKKyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IDA7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBTY29wZWRYUmVzb3VyY2U8WFZp
c3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm87CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtQXZhaWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV92aXN1YWxJbmZv
KQotICAgICAgICAgICAgICAgIFhGcmVlKG1fdmlzdWFsSW5mbyk7Ci0KLSAgICAgICAgICAgIG1f
dmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRl
bXBbaV0pOwotICAgICAgICAgICAgaWYgKCFtX3Zpc3VhbEluZm8pCisgICAgICAgICAgICBzY29w
ZWRWaXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwg
dGVtcFtpXSk7CisgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgICAg
ICAgICBpZiAobV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBY
UmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFy
ZWREaXNwbGF5LCBtX3Zpc3VhbEluZm8tPnZpc3VhbCk7CisgICAgICAgICAgICAgICAgWFJlbmRl
clBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkRGlz
cGxheSwgc2NvcGVkVmlzdWFsSW5mby0+dmlzdWFsKTsKICAgICAgICAgICAgICAgICBpZiAoZm9y
bWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IHRl
bXBbaV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9PSAzMikgewotI2Vsc2UK
LSAgICAgICAgICAgIGlmIChtX3Zpc3VhbEluZm8tPmRlcHRoID09IDMyKSB7Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbaV07Ci0gICAgICAgICAgICAgICAg
Zm91bmQgPSB0cnVlOwogICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBpZiAoIW1f
c3VyZmFjZUNvbnRleHRGQkNvbmZpZyAmJiBzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSAzMikK
KyAgICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wW2ldOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGluZyBh
bHBoYSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBpZiAoIWZv
dW5kKSB7Ci0gICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbMF07Ci0gICAgICAgICAg
ICBtX3Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5
LCB0ZW1wWzBdKTsKLSAgICAgICAgfQotCi0gICAgICAgIFhGcmVlKHRlbXApOwotCi0gICAgICAg
IHJldHVybiBzZWxlY3RlZENvbmZpZzsKKyAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJD
b25maWcpCisgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wWzBdOwog
ICAgIH0KIAogICAgIEdMWEZCQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOwogICAgIEdMWEZCQ29u
ZmlnIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsKLSAgICBYVmlzdWFsSW5mbyogbV92aXN1YWxJ
bmZvOwogICAgIERpc3BsYXkqIG1fc2hhcmVkRGlzcGxheTsKICAgICBib29sIG1fc3VwcG9ydHNY
UmVuZGVyRXh0ZW5zaW9uOwogfTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IDJkNmM0ZjQuLmU3
YmFmOTQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIEdMWFRyYW5z
cG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2UoKQogICAgIH0KIAogICAgIG1fY29uZmln
U2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgR0xYQ29uZmlnU2VsZWN0b3IobV9zaGFyZWREaXNwbGF5
LCBtX25hdGl2ZVJlc291cmNlLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkpOworICAg
IFNjb3BlZFhSZXNvdXJjZTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52
aXN1YWxJbmZvKCkpOwogCi0gICAgaWYgKCFjb25maWd1cmF0aW9uKCkpIHsKKyAgICBpZiAoIXZp
c0luZm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9uYXRpdmVSZXNvdXJjZS0+c2V0VmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9y
LT52aXN1YWxJbmZvKCkpOwotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNjcmVlbldp
bmRvdygmbV9idWZmZXJIYW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZlNj
cmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUsICp2aXNJbmZvLmdldCgpKTsKIAogICAgIGlmICgh
bV9idWZmZXJIYW5kbGUpIHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMu
Y3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5k
b3dSZXNvdXJjZXMuY3BwCmluZGV4IDVhNTdhODEuLjU1NzRmZWQgMTAwNjQ0Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2Vz
LmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gx
MVdpbmRvd1Jlc291cmNlcy5jcHAKQEAgLTQxLDEwICs0MSw2IEBAIFgxMU9mZlNjcmVlbldpbmRv
dzo6WDExT2ZmU2NyZWVuV2luZG93KCkKIAogWDExT2ZmU2NyZWVuV2luZG93Ojp+WDExT2ZmU2Ny
ZWVuV2luZG93KCkKIHsKLSAgICBpZiAobV9jb25maWdWaXN1YWxJbmZvKSB7Ci0gICAgICAgIFhG
cmVlKG1fY29uZmlnVmlzdWFsSW5mbyk7Ci0gICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IDA7
Ci0gICAgfQogfQogCiB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0
IEludFJlY3QmIG5ld1JlY3QsIGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQpAQCAtNTMsNyArNDks
NyBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0IEludFJlY3Qm
IG5ld1JlY3QsIGNvbnN0IHVpbnQzMl90IHdpbgogICAgIFhGbHVzaChtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpKTsKIH0KIAotdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCit2b2lkIFgxMU9mZlNjcmVlbldpbmRv
dzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCwgY29uc3QgWFZpc3Vh
bEluZm8mIHZpc0luZm8sIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKCFtX3NoYXJl
ZFJlc291cmNlcykKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsNyArNTgsNyBAQCB2b2lkIFgxMU9m
ZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkK
ICAgICBpZiAoIWRpc3BsYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9jb25maWdW
aXN1YWxJbmZvKSB7CisgICAgaWYgKCF2aXNJbmZvLnZpc3VhbCkgewogICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBmaW5kIHZhbGlkIFhWaXN1YWwuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC03MSwxMyArNjcsMTMgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCiAgICAgaWYgKCF4V2luZG93KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3Bs
YXksIHhXaW5kb3csIG1fY29uZmlnVmlzdWFsSW5mby0+dmlzdWFsLCBBbGxvY05vbmUpOworICAg
IENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgeFdpbmRvdywgdmlzSW5m
by52aXN1YWwsIEFsbG9jTm9uZSk7CiAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRl
OwogICAgIGF0dHJpYnV0ZS5iYWNrZ3JvdW5kX3BpeGVsID0gV2hpdGVQaXhlbChkaXNwbGF5LCAw
KTsKICAgICBhdHRyaWJ1dGUuYm9yZGVyX3BpeGVsID0gQmxhY2tQaXhlbChkaXNwbGF5LCAwKTsK
ICAgICBhdHRyaWJ1dGUuY29sb3JtYXAgPSBjbWFwOwogICAgIHVpbnQzMl90IHRlbXBIYW5kbGVJ
ZDsKLSAgICB0ZW1wSGFuZGxlSWQgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksIHhXaW5kb3csIDAs
IDAsIDEsIDEsIDAsIG1fY29uZmlnVmlzdWFsSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCBtX2Nv
bmZpZ1Zpc3VhbEluZm8tPnZpc3VhbCwgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dD
b2xvcm1hcCwgJmF0dHJpYnV0ZSk7CisgICAgdGVtcEhhbmRsZUlkID0gWENyZWF0ZVdpbmRvdyhk
aXNwbGF5LCB4V2luZG93LCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIHZp
c0luZm8uZGVwdGgsIElucHV0T3V0cHV0LCB2aXNJbmZvLnZpc3VhbCwgQ1dCYWNrUGl4ZWwgfCBD
V0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwgJmF0dHJpYnV0ZSk7CiAKICAgICBpZiAoIXRlbXBI
YW5kbGVJZCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgb2Zmc2NyZWVu
IHdpbmRvdy4iKTsKQEAgLTg1LDg4ICs4MSw2NSBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6
Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKICAgICB9CiAKICAgICBY
U2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChkaXNwbGF5LCB0ZW1wSGFuZGxlSWQsIDApOworI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhkaXNw
bGF5LCB0ZW1wSGFuZGxlSWQsIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyNlbmRpZgorICAg
IFhNYXBXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlkKTsKICAgICAqaGFuZGxlSWQgPSB0ZW1w
SGFuZGxlSWQ7Ci0KLSAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lv
blN1cHBvcnRlZCgpKQotICAgICAgICBYTWFwV2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCk7
Ci0KLX0KLQotdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3coY29uc3QgdWlu
dDMyX3Qgd2luZG93SWQpCi17Ci0gICAgaWYgKCF3aW5kb3dJZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCk7
Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBYRGVzdHJveVdpbmRv
dyhkaXNwbGF5LCB3aW5kb3dJZCk7Ci19Ci0KLURpc3BsYXkqIFgxMU9mZlNjcmVlbldpbmRvdzo6
bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkUmVzb3Vy
Y2VzLT54MTFEaXNwbGF5KCk7CiB9CiAKICNpZiBVU0UoRUdMKQotYm9vbCBYMTFPZmZTY3JlZW5X
aW5kb3c6OnNldFZpc3VhbElkKGNvbnN0IEVHTGludCBpZCkKK3ZvaWQgWDExT2ZmU2NyZWVuV2lu
ZG93OjpjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkLCBjb25zdCBFR0xp
bnQgaWQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgVmlzdWFsSUQgdmlzdWFsSWQgPSBz
dGF0aWNfY2FzdDxWaXN1YWxJRD4oaWQpOwogCiAgICAgaWYgKCF2aXN1YWxJZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICAvLyBFR0wgaGFzIHN1Z2dlc3Rl
ZCBhIHZpc3VhbCBpZCwgc28gZ2V0IHRoZSByZXN0IG9mIHRoZSB2aXN1YWwgaW5mbyBmb3IgdGhh
dCBpZC4KICAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvVGVtcGxhdGU7CiAgICAgbWVtc2V0KCZ2
aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwogICAgIHZpc3VhbElu
Zm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZpc3VhbElkOwotCi0gICAgWFZpc3VhbEluZm8qIGNob3Nl
blZpc3VhbEluZm87CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOwotICAgIGNob3NlblZpc3Vh
bEluZm8gPSBYR2V0VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBW
aXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKLSAgICBp
ZiAoY2hvc2VuVmlzdWFsSW5mbykgewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAg
ICBpZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKSB7
Ci0gICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgY2hvc2VuVmlzdWFsSW5m
by0+dmlzdWFsKTsKLSAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxw
aGFNYXNrID4gMCkgewotICAgICAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IGNob3Nl
blZpc3VhbEluZm87Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGgg
PT0gMzIpIHsKLSAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IGNob3NlblZpc3VhbElu
Zm87Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KKyAgICBTY29w
ZWRYUmVzb3VyY2U8WFZpc3VhbEluZm8+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyht
X3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZv
VGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFZpc3VhbEluZm8qIGZvdW5kVmlzdWFs
ID0gMDsKIAotICAgIGlmICghbV9jb25maWdWaXN1YWxJbmZvKSB7Ci0gICAgICAgIG1lbXNldCgm
dmlzdWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKLSAgICAgICAgWFZp
c3VhbEluZm8qIG1hdGNoaW5nVmlzdWFsczsKLSAgICAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAw
OworICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGk8
IG1hdGNoaW5nQ291bnQ7IGkrKykgeworICAgICAgICAgICAgWFZpc3VhbEluZm8qIHRlbXAgPSAm
bWF0Y2hpbmdWaXN1YWxzWzBdOwogCi0gICAgICAgIHZpc3VhbEluZm9UZW1wbGF0ZS5kZXB0aCA9
IGNob3NlblZpc3VhbEluZm8tPmRlcHRoOwotICAgICAgICBtYXRjaGluZ1Zpc3VhbHMgPSBYR2V0
VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxEZXB0aE1h
c2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKKyAgICAgICAgICAgIGlm
IChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgdGVtcC0+dmlzdWFsKTsK
KyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+
IDApCisgICAgICAgICAgICAgICAgICAgIGZvdW5kVmlzdWFsID0gdGVtcDsKKyAgICAgICAgICAg
IH0KIAotICAgICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7Ci0gICAgICAgICAgICBtX2NvbmZp
Z1Zpc3VhbEluZm8gPSAmbWF0Y2hpbmdWaXN1YWxzWzBdOwotICAgICAgICAgICAgWEZyZWUobWF0
Y2hpbmdWaXN1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYg
KCFmb3VuZFZpc3VhbCAmJiB0ZW1wLT5kZXB0aCA9PSAzMikKKyAgICAgICAgICAgICAgICBmb3Vu
ZFZpc3VhbCA9IHRlbXA7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoZm91bmRWaXN1YWwpCisg
ICAgICAgICAgICBjcmVhdGVPZmZTY3JlZW5XaW5kb3coaGFuZGxlSWQsICpmb3VuZFZpc3VhbCwg
c2l6ZSk7CiAgICAgfQorfQogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pCi0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIFhWaXN1YWwgSW5mby4iKTsKKyNlbmRpZgog
Ci0gICAgcmV0dXJuIGZhbHNlOwordm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5k
b3coY29uc3QgdWludDMyX3Qgd2luZG93SWQpCit7CisgICAgaWYgKCF3aW5kb3dJZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRGlzcGxheSogZGlzcGxheSA9IG1fc2hhcmVkUmVzb3VyY2VzLT54
MTFEaXNwbGF5KCk7CisgICAgaWYgKCFkaXNwbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBY
RGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCk7CiB9Ci0jZW5kaWYKIAotdm9pZCBYMTFP
ZmZTY3JlZW5XaW5kb3c6OnNldFZpc3VhbEluZm8oWFZpc3VhbEluZm8qIHZpc0luZm8pCitEaXNw
bGF5KiBYMTFPZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkoKSBjb25zdAogewot
ICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IHZpc0luZm87CisgICAgcmV0dXJuIG1fc2hhcmVkUmVz
b3VyY2VzLT54MTFEaXNwbGF5KCk7CiB9CiAKIGJvb2wgWDExT2ZmU2NyZWVuV2luZG93Ojppc1hS
ZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3Vy
Y2VzLmgKaW5kZXggYTM5ODY1ZC4uNThhYTQyYiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaAorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291
cmNlcy5oCkBAIC0zMCwxMSArMzAsMTQgQEAKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKIAotI2lu
Y2x1ZGUgPG9wZW5nbC9HTERlZnMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
KyNpZiBVU0UoRUdMKQorI2luY2x1ZGUgPG9wZW5nbC9HTERlZnMuaD4KKyNlbmRpZgorCiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0
ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KQEAgLTQyLDYgKzQ1LDM5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBTY29wZWRYUmVzb3VyY2UgeworCisgICAgU2NvcGVkWFJlc291cmNlKCkgOiBtX3hSZXNvdXJj
ZSgwKSB7IH0KKyAgICBTY29wZWRYUmVzb3VyY2UoVCogeFJlc291cmNlKSA6IG1feFJlc291cmNl
KHhSZXNvdXJjZSkgeyB9CisKKyAgICB+U2NvcGVkWFJlc291cmNlKCkKKyAgICB7CisgICAgICAg
IGlmIChtX3hSZXNvdXJjZSkKKyAgICAgICAgICAgIFhGcmVlKG1feFJlc291cmNlKTsKKyAgICB9
CisKKyAgICBTY29wZWRYUmVzb3VyY2UmIG9wZXJhdG9yPShUKiB4UmVzb3VyY2UpCisgICAgewor
ICAgICAgICBpZiAobV94UmVzb3VyY2UpCisgICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJjZSk7
CisKKyAgICAgICAgbV94UmVzb3VyY2UgPSB4UmVzb3VyY2U7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBvcGVyYXRvciBUKigpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNl
OyB9CisgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9Cisg
ICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV94UmVzb3VyY2U7IH0KKworcHJpdmF0ZToKKyAg
ICBTY29wZWRYUmVzb3VyY2UoY29uc3QgU2NvcGVkWFJlc291cmNlJik7CisgICAgU2NvcGVkWFJl
c291cmNlJiBvcGVyYXRvcj0oY29uc3QgU2NvcGVkWFJlc291cmNlJik7CisgICAgc3RhdGljIHZv
aWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90KTsKKyAgICBzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxl
dGUgKHZvaWQqKTsKKyAgICBUKiBtX3hSZXNvdXJjZTsKK307CisKIGNsYXNzIFNoYXJlZFgxMVJl
c291cmNlcyA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTaGFyZWRYMTFSZXNvdXJjZXMpOwogCkBAIC0xNDMsMTMgKzE3OSwxMyBAQCBjbGFz
cyBYMTFPZmZTY3JlZW5XaW5kb3cgewogcHVibGljOgogICAgIFgxMU9mZlNjcmVlbldpbmRvdygp
OwogICAgIHZpcnR1YWwgflgxMU9mZlNjcmVlbldpbmRvdygpOwotICAgIHZvaWQgY3JlYXRlT2Zm
c2NyZWVuV2luZG93KHVpbnQzMl90Kik7CisgICAgdm9pZCBjcmVhdGVPZmZTY3JlZW5XaW5kb3co
dWludDMyX3QqLCBjb25zdCBYVmlzdWFsSW5mbyYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgx
LCAxKSk7CisjaWYgVVNFKEVHTCkKKyAgICB2b2lkIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50
MzJfdCosIGNvbnN0IEVHTGludCwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKKyNl
bmRpZgogICAgIHZvaWQgZGVzdHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCk7CiAgICAgdm9pZCBy
ZVNpemVXaW5kb3coY29uc3QgSW50UmVjdCYsIGNvbnN0IHVpbnQzMl90KTsKICAgICBEaXNwbGF5
KiBuYXRpdmVTaGFyZWREaXNwbGF5KCkgY29uc3Q7Ci0jaWYgVVNFKEVHTCkKLSAgICBib29sIHNl
dFZpc3VhbElkKGNvbnN0IEVHTGludCk7Ci0jZW5kaWYKICAgICB2b2lkIHNldFZpc3VhbEluZm8o
WFZpc3VhbEluZm8qKTsKICAgICBib29sIGlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpIGNv
bnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183674</attachid>
            <date>2013-01-20 09:15:10 -0800</date>
            <delta_ts>2013-01-20 21:19:24 -0800</delta_ts>
            <desc>patchv2</desc>
            <filename>XMemoryLeakFixes.patch</filename>
            <type>text/plain</type>
            <size>18143</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1ZTYxM2IuLjljYTg3NGUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEz
LTAxLTIwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRWZsXVtXZWJHTF0gQWRkIHN1cHBvcnQgdG8gYmV0dGVyIHRyYWNrIGFuZCBm
cmVlIFhNZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDczOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdMIHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVj
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6R0xYQ29uZmlnU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnZpc3VhbEluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnBCdWZmZXJDb250ZXh0Q29u
ZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpzdXJmYWNlQ29udGV4
dENvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6Y3JlYXRlU3Vy
ZmFjZUNvbmZpZyk6CisgICAgICAgIChHTFhDb25maWdTZWxlY3Rvcik6CisgICAgICAgIFJlbW92
ZWQgVmlzdWFsSW5mbyBhcyBtZW1iZXIgdmFyaWFibGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dS
ZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93Ojp+WDEx
T2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6
Y3JlYXRlT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oOgorICAg
ICAgICBSZW1vdmVkIHVudXNlZCBjb2RlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU2NvcGVkWFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZFhSZXNvdXJjZTo6U2NvcGVkWFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
b3BlZFhSZXNvdXJjZTo6flNjb3BlZFhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29w
ZWRYUmVzb3VyY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRYUmVzb3Vy
Y2U6Om9wZXJhdG9yIFQqKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFhSZXNvdXJjZTo6b3Bl
cmF0b3ItPik6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRYUmVzb3VyY2U6OmdldCk6CisgICAg
ICAgIChYMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICBDYWxscyBYRnJlZSBvbiAgcG9pbnRl
ciB0byBtZW1vcnkgYWxsb2NhdGVkIGJ5IFggd2hlbiB0aGUgY2xhc3MgZ29lcyBvdXQgb2Ygc2Nv
cGUuCisKIDIwMTMtMDEtMTkgIEtvbmRhcGFsbHkgS2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlA
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dlYkdMXSBSZWdyZXNzaW9uOiBXZWJHTCBDb250
ZW50IGlzIG5vdCBkcmF3biBhZnRlciByZXNpemluZyB0aGUgY2FudmFzLgpkaWZmIC0tZ2l0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNw
cCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFj
ZS5jcHAKaW5kZXggYjUyNGFiNS4uMjZkNTZhNSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC01
NywxMiArNTcsNyBAQCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3Bv
cnRTdXJmYWNlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9uYXRpdmVS
ZXNvdXJjZS0+c2V0VmlzdWFsSWQodmlzdWFsSWQpKSB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNj
cmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0
ZU9mZlNjcmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUsIHZpc3VhbElkKTsKIAogICAgIGlmICgh
bV9idWZmZXJIYW5kbGUpIHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5o
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oCmluZGV4IDdlMGNmYzAuLmY4ZDQyODQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaAorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1Nl
bGVjdG9yLmgKQEAgLTM5LDcgKzM5LDYgQEAgcHVibGljOgogICAgIEdMWENvbmZpZ1NlbGVjdG9y
KERpc3BsYXkqIHhEaXNwbGF5LCBib29sIHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAgICAg
ICAgOiBtX3BidWZmZXJGQkNvbmZpZygwKQogICAgICAgICAsIG1fc3VyZmFjZUNvbnRleHRGQkNv
bmZpZygwKQotICAgICAgICAsIG1fdmlzdWFsSW5mbygwKQogICAgICAgICAsIG1fc2hhcmVkRGlz
cGxheSh4RGlzcGxheSkKICAgICAgICAgLCBtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbihzdXBw
b3J0c1hSZW5kZXJFeHRlbnNpb24pCiAgICAgewpAQCAtNDksOSArNDgsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbygpIGNvbnN0CisgICAg
WFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlzdWFs
SW5mbzsKKyAgICAgICAgaWYgKCFzdXJmYWNlQ29udGV4dENvbmZpZygpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3No
YXJlZERpc3BsYXksIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyk7CiAgICAgfQogCiAgICAgR0xY
RkJDb25maWcgcEJ1ZmZlckNvbnRleHRDb25maWcoKQpAQCAtNjksMTAgKzcxLDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7
Ci0gICAgICAgICAgICBHTFhGQkNvbmZpZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hh
cmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAm
bnVtQXZhaWxhYmxlQ29uZmlncyk7CisgICAgICAgICAgICBTY29wZWRYUmVzb3VyY2U8R0xYRkJD
b25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2Ny
ZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7
CiAgICAgICAgICAgICBpZiAobnVtQXZhaWxhYmxlQ29uZmlncykKICAgICAgICAgICAgICAgICBt
X3BidWZmZXJGQkNvbmZpZyA9IHRlbXBbMF07Ci0gICAgICAgICAgICBYRnJlZSh0ZW1wKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBtX3BidWZmZXJGQkNvbmZpZzsKQEAgLTgwLDIzICs4
MSw4IEBAIHB1YmxpYzoKIAogICAgIEdMWEZCQ29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCkK
ICAgICB7Ci0gICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKSB7Ci0gICAgICAg
ICAgICBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgICAgICAgICBHTFhfTEVW
RUwsIDAsCi0gICAgICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklU
LAotICAgICAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwgICBHTFhfUkdCQV9CSVQsCi0gICAg
ICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0dS
RUVOX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEsCi0g
ICAgICAgICAgICAgICAgR0xYX0FMUEhBX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xY
X0RFUFRIX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUsIEdM
WF9UUlVFX0NPTE9SLAotICAgICAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAot
ICAgICAgICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIG1fc3Vy
ZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0ZUNvbmZpZyhhdHRyaWJ1dGVzKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykKKyAgICAgICAgICAgIGNy
ZWF0ZVN1cmZhY2VDb25maWcoKTsKIAogICAgICAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4dEZC
Q29uZmlnOwogICAgIH0KQEAgLTEwOCw1NiArOTQsNTUgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBHTFhGQkNvbmZpZyBjcmVhdGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0ZXNb
XSkKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2VDb25maWcoKQogICAgIHsKLSAgICAgICAgaW50IG51
bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgIG1fdmlzdWFsSW5mbyA9IDA7Ci0gICAgICAgIEdM
WEZCQ29uZmlnKiB0ZW1wID0gZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZh
dWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25m
aWdzKTsKKyAgICAgICAgc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CisgICAgICAgICAgICBH
TFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19C
SVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JHQkFfQklULAorICAgICAg
ICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCisgICAgICAgICAgICBHTFhfR1JFRU5fU0laRSwg
ICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAorICAgICAgICAgICAgR0xY
X0FMUEhBX1NJWkUsICAgIDEsCisgICAgICAgICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwKKyAg
ICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBFLCBHTFhfVFJVRV9DT0xPUiwKKyAgICAgICAgICAg
IEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAorICAgICAgICAgICAgTm9uZQorICAgICAgICB9Owog
Ci0gICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncykKLSAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKKyAgICAgICAgU2NvcGVkWFJlc291
cmNlPEdMWEZCQ29uZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwg
RGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxl
Q29uZmlncykpOwogCi0gICAgICAgIEdMWEZCQ29uZmlnIHNlbGVjdGVkQ29uZmlnID0gMDsKLSAg
ICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICBpZiAoIW51bUF2YWlsYWJsZUNvbmZp
Z3MpIHsKKyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IDA7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBTY29wZWRYUmVzb3VyY2U8WFZpc3Vh
bEluZm8+IHNjb3BlZFZpc3VhbEluZm87CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
QXZhaWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV92aXN1YWxJbmZvKQot
ICAgICAgICAgICAgICAgIFhGcmVlKG1fdmlzdWFsSW5mbyk7Ci0KLSAgICAgICAgICAgIG1fdmlz
dWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBb
aV0pOwotICAgICAgICAgICAgaWYgKCFtX3Zpc3VhbEluZm8pCisgICAgICAgICAgICBzY29wZWRW
aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgdGVt
cFtpXSk7CisgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgICAgICAg
ICBpZiAobV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBYUmVu
ZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFyZWRE
aXNwbGF5LCBtX3Zpc3VhbEluZm8tPnZpc3VhbCk7CisgICAgICAgICAgICAgICAgWFJlbmRlclBp
Y3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkRGlzcGxh
eSwgc2NvcGVkVmlzdWFsSW5mby0+dmlzdWFsKTsKICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0
ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
c2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IHRlbXBb
aV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9PSAzMikgewotI2Vsc2UKLSAg
ICAgICAgICAgIGlmIChtX3Zpc3VhbEluZm8tPmRlcHRoID09IDMyKSB7Ci0jZW5kaWYKLSAgICAg
ICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbaV07Ci0gICAgICAgICAgICAgICAgZm91
bmQgPSB0cnVlOwogICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBpZiAoIW1fc3Vy
ZmFjZUNvbnRleHRGQkNvbmZpZyAmJiBzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSAzMikKKyAg
ICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wW2ldOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGluZyBhbHBo
YSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBpZiAoIWZvdW5k
KSB7Ci0gICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbMF07Ci0gICAgICAgICAgICBt
X3Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0
ZW1wWzBdKTsKLSAgICAgICAgfQotCi0gICAgICAgIFhGcmVlKHRlbXApOwotCi0gICAgICAgIHJl
dHVybiBzZWxlY3RlZENvbmZpZzsKKyAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25m
aWcpCisgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wWzBdOwogICAg
IH0KIAogICAgIEdMWEZCQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOwogICAgIEdMWEZCQ29uZmln
IG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsKLSAgICBYVmlzdWFsSW5mbyogbV92aXN1YWxJbmZv
OwogICAgIERpc3BsYXkqIG1fc2hhcmVkRGlzcGxheTsKICAgICBib29sIG1fc3VwcG9ydHNYUmVu
ZGVyRXh0ZW5zaW9uOwogfTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IDJkNmM0ZjQuLmU3YmFm
OTQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvR0xYU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIEdMWFRyYW5zcG9y
dFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2UoKQogICAgIH0KIAogICAgIG1fY29uZmlnU2Vs
ZWN0b3IgPSBhZG9wdFB0cihuZXcgR0xYQ29uZmlnU2VsZWN0b3IobV9zaGFyZWREaXNwbGF5LCBt
X25hdGl2ZVJlc291cmNlLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkpOworICAgIFNj
b3BlZFhSZXNvdXJjZTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1
YWxJbmZvKCkpOwogCi0gICAgaWYgKCFjb25maWd1cmF0aW9uKCkpIHsKKyAgICBpZiAoIXZpc0lu
Zm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9uYXRpdmVSZXNvdXJjZS0+c2V0VmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52
aXN1YWxJbmZvKCkpOwotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNjcmVlbldpbmRv
dygmbV9idWZmZXJIYW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZlNjcmVl
bldpbmRvdygmbV9idWZmZXJIYW5kbGUsICp2aXNJbmZvLmdldCgpKTsKIAogICAgIGlmICghbV9i
dWZmZXJIYW5kbGUpIHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3Bw
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dS
ZXNvdXJjZXMuY3BwCmluZGV4IDVhNTdhODEuLjMyYzA1MDAgMTAwNjQ0Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNw
cAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdp
bmRvd1Jlc291cmNlcy5jcHAKQEAgLTM0LDE3ICszNCwxMiBAQCBTaGFyZWRYMTFSZXNvdXJjZXMq
IFNoYXJlZFgxMVJlc291cmNlczo6bV9zdGF0aWNTaGFyZWRSZXNvdXJjZSA9IDA7CiAKIFgxMU9m
ZlNjcmVlbldpbmRvdzo6WDExT2ZmU2NyZWVuV2luZG93KCkKICAgICA6IG1fc2hhcmVkUmVzb3Vy
Y2VzKDApCi0gICAgLCBtX2NvbmZpZ1Zpc3VhbEluZm8oMCkKIHsKICAgICBtX3NoYXJlZFJlc291
cmNlcyA9IFNoYXJlZFgxMVJlc291cmNlczo6Y3JlYXRlKCk7CiB9CiAKIFgxMU9mZlNjcmVlbldp
bmRvdzo6flgxMU9mZlNjcmVlbldpbmRvdygpCiB7Ci0gICAgaWYgKG1fY29uZmlnVmlzdWFsSW5m
bykgewotICAgICAgICBYRnJlZShtX2NvbmZpZ1Zpc3VhbEluZm8pOwotICAgICAgICBtX2NvbmZp
Z1Zpc3VhbEluZm8gPSAwOwotICAgIH0KIH0KIAogdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OnJl
U2l6ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBjb25zdCB1aW50MzJfdCB3aW5kb3dJ
ZCkKQEAgLTUzLDcgKzQ4LDcgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OnJlU2l6ZVdpbmRv
dyhjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBjb25zdCB1aW50MzJfdCB3aW4KICAgICBYRmx1c2go
bV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSk7CiB9CiAKLXZvaWQgWDExT2ZmU2NyZWVu
V2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQordm9pZCBY
MTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxl
SWQsIGNvbnN0IFhWaXN1YWxJbmZvJiB2aXNJbmZvLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGlmICghbV9zaGFyZWRSZXNvdXJjZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzU3
LDcgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50
MzJfdCogaGFuZGxlSWQpCiAgICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykgeworICAgIGlmICghdmlzSW5mby52aXN1YWwpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZmluZCB2YWxpZCBYVmlzdWFsLiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNzEsMTMgKzY2LDEzIEBAIHZvaWQgWDExT2ZmU2NyZWVu
V2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIGlm
ICgheFdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3JtYXAgY21hcCA9IFhDcmVh
dGVDb2xvcm1hcChkaXNwbGF5LCB4V2luZG93LCBtX2NvbmZpZ1Zpc3VhbEluZm8tPnZpc3VhbCwg
QWxsb2NOb25lKTsKKyAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXks
IHhXaW5kb3csIHZpc0luZm8udmlzdWFsLCBBbGxvY05vbmUpOwogICAgIFhTZXRXaW5kb3dBdHRy
aWJ1dGVzIGF0dHJpYnV0ZTsKICAgICBhdHRyaWJ1dGUuYmFja2dyb3VuZF9waXhlbCA9IFdoaXRl
UGl4ZWwoZGlzcGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmJvcmRlcl9waXhlbCA9IEJsYWNrUGl4
ZWwoZGlzcGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmNvbG9ybWFwID0gY21hcDsKICAgICB1aW50
MzJfdCB0ZW1wSGFuZGxlSWQ7Ci0gICAgdGVtcEhhbmRsZUlkID0gWENyZWF0ZVdpbmRvdyhkaXNw
bGF5LCB4V2luZG93LCAwLCAwLCAxLCAxLCAwLCBtX2NvbmZpZ1Zpc3VhbEluZm8tPmRlcHRoLCBJ
bnB1dE91dHB1dCwgbV9jb25maWdWaXN1YWxJbmZvLT52aXN1YWwsIENXQmFja1BpeGVsIHwgQ1dC
b3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhdHRyaWJ1dGUpOworICAgIHRlbXBIYW5kbGVJZCA9
IFhDcmVhdGVXaW5kb3coZGlzcGxheSwgeFdpbmRvdywgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpLCAwLCB2aXNJbmZvLmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzSW5mby52aXN1YWws
IENXQmFja1BpeGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhdHRyaWJ1dGUpOwog
CiAgICAgaWYgKCF0ZW1wSGFuZGxlSWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIG9mZnNjcmVlbiB3aW5kb3cuIik7CkBAIC04NSw4OCArODAsNjUgQEAgdm9pZCBYMTFP
ZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQp
CiAgICAgfQogCiAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAoZGlzcGxheSwgdGVtcEhh
bmRsZUlkLCAwKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBYQ29tcG9zaXRlUmVk
aXJlY3RXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlkLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVh
bCk7CisjZW5kaWYKKyAgICBYTWFwV2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCk7CiAgICAg
KmhhbmRsZUlkID0gdGVtcEhhbmRsZUlkOwotCi0gICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5p
c1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkKLSAgICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5
LCB0ZW1wSGFuZGxlSWQpOwotCi19Ci0KLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95
V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQotewotICAgIGlmICghd2luZG93SWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93SWQpOwotfQotCi1EaXNwbGF5KiBYMTFP
ZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogfQogCiAjaWYgVVNFKEVHTCkKLWJv
b2wgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJZChjb25zdCBFR0xpbnQgaWQpCit2b2lk
IFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5k
bGVJZCwgY29uc3QgRUdMaW50IGlkLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFZpc3Vh
bElEIHZpc3VhbElkID0gc3RhdGljX2Nhc3Q8VmlzdWFsSUQ+KGlkKTsKIAogICAgIGlmICghdmlz
dWFsSWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RUdMIGhhcyBzdWdnZXN0ZWQgYSB2aXN1YWwgaWQsIHNvIGdldCB0aGUgcmVzdCBvZiB0aGUgdmlz
dWFsIGluZm8gZm9yIHRoYXQgaWQuCiAgICAgWFZpc3VhbEluZm8gdmlzdWFsSW5mb1RlbXBsYXRl
OwogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8p
KTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKLQotICAgIFhW
aXN1YWxJbmZvKiBjaG9zZW5WaXN1YWxJbmZvOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsK
LSAgICBjaG9zZW5WaXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMt
PngxMURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCk7Ci0gICAgaWYgKGNob3NlblZpc3VhbEluZm8pIHsKLSNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLSAgICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNp
b25TdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9
IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCks
IGNob3NlblZpc3VhbEluZm8tPnZpc3VhbCk7Ci0gICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZv
cm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAgICAgICAgICAgICAgICBtX2NvbmZpZ1Zp
c3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKGNob3NlblZp
c3VhbEluZm8tPmRlcHRoID09IDMyKSB7Ci0gICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8g
PSBjaG9zZW5WaXN1YWxJbmZvOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgU2NvcGVkWFJlc291cmNlPFhWaXN1YWxJbmZvPiBtYXRjaGluZ1Zpc3VhbHMo
WEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgVmlzdWFsSURN
YXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhWaXN1YWxJ
bmZvKiBmb3VuZFZpc3VhbCA9IDA7CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykgewot
ICAgICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZv
KSk7Ci0gICAgICAgIFhWaXN1YWxJbmZvKiBtYXRjaGluZ1Zpc3VhbHM7Ci0gICAgICAgIGludCBt
YXRjaGluZ0NvdW50ID0gMDsKKyAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpPCBtYXRjaGluZ0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFhWaXN1
YWxJbmZvKiB0ZW1wID0gJm1hdGNoaW5nVmlzdWFsc1swXTsKIAotICAgICAgICB2aXN1YWxJbmZv
VGVtcGxhdGUuZGVwdGggPSBjaG9zZW5WaXN1YWxJbmZvLT5kZXB0aDsKLSAgICAgICAgbWF0Y2hp
bmdWaXN1YWxzID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KSwgVmlzdWFsRGVwdGhNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCk7
CisgICAgICAgICAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lvblN1
cHBvcnRlZCgpKSB7CisgICAgICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9
IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCks
IHRlbXAtPnZpc3VhbCk7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRp
cmVjdC5hbHBoYU1hc2sgPiAwKQorICAgICAgICAgICAgICAgICAgICBmb3VuZFZpc3VhbCA9IHRl
bXA7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgewotICAg
ICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gJm1hdGNoaW5nVmlzdWFsc1swXTsKLSAgICAg
ICAgICAgIFhGcmVlKG1hdGNoaW5nVmlzdWFscyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICghZm91bmRWaXN1YWwgJiYgdGVtcC0+ZGVwdGggPT0gMzIpCisgICAg
ICAgICAgICAgICAgZm91bmRWaXN1YWwgPSB0ZW1wOwogICAgICAgICB9CisKKyAgICAgICAgaWYg
KGZvdW5kVmlzdWFsKQorICAgICAgICAgICAgY3JlYXRlT2ZmU2NyZWVuV2luZG93KGhhbmRsZUlk
LCAqZm91bmRWaXN1YWwsIHNpemUpOwogICAgIH0KK30KIAotICAgIGlmICghbV9jb25maWdWaXN1
YWxJbmZvKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBYVmlzdWFsIElu
Zm8uIik7CisjZW5kaWYKIAotICAgIHJldHVybiBmYWxzZTsKK3ZvaWQgWDExT2ZmU2NyZWVuV2lu
ZG93OjpkZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQoreworICAgIGlmICgh
d2luZG93SWQpCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3No
YXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93SWQpOwogfQotI2Vu
ZGlmCiAKLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZv
KiB2aXNJbmZvKQorRGlzcGxheSogWDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNw
bGF5KCkgY29uc3QKIHsKLSAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSB2aXNJbmZvOworICAgIHJl
dHVybiBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogfQogCiBib29sIFgxMU9mZlNj
cmVlbldpbmRvdzo6aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkgY29uc3QKZGlmZiAtLWdp
dCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93
UmVzb3VyY2VzLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMVdpbmRvd1Jlc291cmNlcy5oCmluZGV4IGEzOTg2NWQuLmQxZTliZGIgMTAwNjQ0Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVz
b3VyY2VzLmgKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFXaW5kb3dSZXNvdXJjZXMuaApAQCAtMzAsMTEgKzMwLDE0IEBACiAKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAKLSNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+
CisjZW5kaWYKKwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+
CkBAIC00Miw2ICs0NSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgU2NvcGVkWFJlc291cmNlIHsKKworICAgIFNjb3BlZFhSZXNvdXJj
ZSgpIDogbV94UmVzb3VyY2UoMCkgeyB9CisgICAgU2NvcGVkWFJlc291cmNlKFQqIHhSZXNvdXJj
ZSkgOiBtX3hSZXNvdXJjZSh4UmVzb3VyY2UpIHsgfQorCisgICAgflNjb3BlZFhSZXNvdXJjZSgp
CisgICAgeworICAgICAgICBpZiAobV94UmVzb3VyY2UpCisgICAgICAgICAgICBYRnJlZShtX3hS
ZXNvdXJjZSk7CisgICAgfQorCisgICAgU2NvcGVkWFJlc291cmNlJiBvcGVyYXRvcj0oVCogeFJl
c291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKG1feFJlc291cmNlKQorICAgICAgICAgICAgWEZy
ZWUobV94UmVzb3VyY2UpOworCisgICAgICAgIG1feFJlc291cmNlID0geFJlc291cmNlOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJl
dHVybiBtX3hSZXNvdXJjZTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBt
X3hSZXNvdXJjZTsgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9
CisKK3ByaXZhdGU6CisgICAgU2NvcGVkWFJlc291cmNlKGNvbnN0IFNjb3BlZFhSZXNvdXJjZSYp
OworICAgIFNjb3BlZFhSZXNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IFNjb3BlZFhSZXNvdXJjZSYp
OworICAgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCk7CisgICAgc3RhdGljIHZv
aWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkKik7CisgICAgVCogbV94UmVzb3VyY2U7Cit9OworCiBj
bGFzcyBTaGFyZWRYMTFSZXNvdXJjZXMgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkWDExUmVzb3VyY2VzKTsKIApAQCAtMTQzLDE5
ICsxNzksMTggQEAgY2xhc3MgWDExT2ZmU2NyZWVuV2luZG93IHsKIHB1YmxpYzoKICAgICBYMTFP
ZmZTY3JlZW5XaW5kb3coKTsKICAgICB2aXJ0dWFsIH5YMTFPZmZTY3JlZW5XaW5kb3coKTsKLSAg
ICB2b2lkIGNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCopOworICAgIHZvaWQgY3JlYXRl
T2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiwgY29uc3QgWFZpc3VhbEluZm8mLCBjb25zdCBJbnRT
aXplJiA9IEludFNpemUoMSwgMSkpOworI2lmIFVTRShFR0wpCisgICAgdm9pZCBjcmVhdGVPZmZT
Y3JlZW5XaW5kb3codWludDMyX3QqLCBjb25zdCBFR0xpbnQsIGNvbnN0IEludFNpemUmID0gSW50
U2l6ZSgxLCAxKSk7CisjZW5kaWYKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3coY29uc3QgdWludDMy
X3QpOwogICAgIHZvaWQgcmVTaXplV2luZG93KGNvbnN0IEludFJlY3QmLCBjb25zdCB1aW50MzJf
dCk7CiAgICAgRGlzcGxheSogbmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0OwotI2lmIFVTRShF
R0wpCi0gICAgYm9vbCBzZXRWaXN1YWxJZChjb25zdCBFR0xpbnQpOwotI2VuZGlmCiAgICAgdm9p
ZCBzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZvKik7CiAgICAgYm9vbCBpc1hSZW5kZXJFeHRlbnNp
b25TdXBwb3J0ZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkWDExUmVz
b3VyY2VzPiBtX3NoYXJlZFJlc291cmNlczsKLSAgICBYVmlzdWFsSW5mbyogbV9jb25maWdWaXN1
YWxJbmZvOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183703</attachid>
            <date>2013-01-20 21:19:24 -0800</date>
            <delta_ts>2013-01-21 15:20:12 -0800</delta_ts>
            <desc>patchv3</desc>
            <filename>reviewmemleakfix.patch</filename>
            <type>text/plain</type>
            <size>18477</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1ZTYxM2IuLmY0NzBjMTAgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEz
LTAxLTIwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRWZsXVtXZWJHTF0gQWRkIGJldHRlciBzdXBwb3J0IHRvIHRyYWNrIGFuZCBm
cmVlIFhSZXNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDczOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBsZWFrIE1lbW9yeSBkdXJpbmcgY29uZmlnIHNlbGVjdGlvbiBhcyB3ZSBkb250
IGZyZWUgdGVtcG9yYXJpbHkKKyAgICAgICAgYWxsb2NhdGVkIHZpc3VhbHMsIGNvbmZpZyBldGMg
YW5kIGFsc28gZG8gZG91YmxlIGRlbGV0aW9uIGluIHNvbWUgY2FzZXMuCisgICAgICAgIFRoaXMg
cGF0Y2ggZW5zdXJlcyB0aGF0IHdlIGRvbnQgbGVhayBhbnkgbWVtb3J5IG9yIHRyeSB0byBmcmVl
IGFuIGFscmVhZHkKKyAgICAgICAgZGUtYWxsb2NhdGVkIHJlc291cmNlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2Vs
ZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpHTFhDb25maWdT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6dmlzdWFsSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6cEJ1ZmZlckNvbnRleHRD
b25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnN1cmZhY2VDb250
ZXh0Q29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpjcmVhdGVT
dXJmYWNlQ29uZmlnKToKKyAgICAgICAgKEdMWENvbmZpZ1NlbGVjdG9yKToKKyAgICAgICAgUmVt
b3ZlZCBWaXN1YWxJbmZvIGFzIG1lbWJlciB2YXJpYWJsZS4gRml4ZWQgbWVtb3J5IGxlYWtzLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRv
d1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6On5Y
MTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93
OjpjcmVhdGVPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmg6Cisg
ICAgICAgIFJlbW92ZWQgdW51c2VkIGNvZGUuIEZpeGVkIG1lbW9yeSBsZWFrcyBhbmQgZGVsZXRp
b24gb2YgYWxyZWFkeSBkZS1hbGxvY2F0ZWQgWCBSZXNvdXJjZS4KKworICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTY29wZWRYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVk
WFJlc291cmNlOjpTY29wZWRYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFJl
c291cmNlOjp+U2NvcGVkWFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFhSZXNv
dXJjZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFhSZXNvdXJjZTo6b3Bl
cmF0b3IgVCopOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFJlc291cmNlOjpvcGVyYXRvci0+
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFhSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFgx
MU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIENhbGxzIFhGcmVlIG9uIHBvaW50ZXIgdG8gbWVt
b3J5IGFsbG9jYXRlZCBieSBYIHdoZW4gdGhlIGNsYXNzIGdvZXMgb3V0IG9mIHNjb3BlLgorCiAy
MDEzLTAxLTE5ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXVtXZWJHTF0gUmVncmVzc2lvbjogV2ViR0wgQ29udGVudCBpcyBu
b3QgZHJhd24gYWZ0ZXIgcmVzaXppbmcgdGhlIGNhbnZhcy4KZGlmZiAtLWdpdCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCmlu
ZGV4IGI1MjRhYjUuLjI2ZDU2YTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcApAQCAtNTcsMTIgKzU3
LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFj
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fbmF0aXZlUmVzb3VyY2Ut
PnNldFZpc3VhbElkKHZpc3VhbElkKSkgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZzY3JlZW5XaW5k
b3coJm1fYnVmZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZTY3Jl
ZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlLCB2aXN1YWxJZCk7CiAKICAgICBpZiAoIW1fYnVmZmVy
SGFuZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3Iu
aAppbmRleCA3ZTBjZmMwLi5mOGQ0Mjg0IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5o
CkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBHTFhDb25maWdTZWxlY3RvcihEaXNwbGF5
KiB4RGlzcGxheSwgYm9vbCBzdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pCiAgICAgICAgIDogbV9w
YnVmZmVyRkJDb25maWcoMCkKICAgICAgICAgLCBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcoMCkK
LSAgICAgICAgLCBtX3Zpc3VhbEluZm8oMCkKICAgICAgICAgLCBtX3NoYXJlZERpc3BsYXkoeERp
c3BsYXkpCiAgICAgICAgICwgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24oc3VwcG9ydHNYUmVu
ZGVyRXh0ZW5zaW9uKQogICAgIHsKQEAgLTQ5LDkgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKSBjb25zdAorICAgIFhWaXN1YWxJ
bmZvKiB2aXN1YWxJbmZvKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Zpc3VhbEluZm87Cisg
ICAgICAgIGlmICghc3VyZmFjZUNvbnRleHRDb25maWcoKSkKKyAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgIHJldHVybiBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNw
bGF5LCBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpOwogICAgIH0KIAogICAgIEdMWEZCQ29uZmln
IHBCdWZmZXJDb250ZXh0Q29uZmlnKCkKQEAgLTY5LDEwICs3MSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIH07CiAKICAgICAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAgICAg
ICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3Bs
YXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWls
YWJsZUNvbmZpZ3MpOworICAgICAgICAgICAgU2NvcGVkWFJlc291cmNlPEdMWEZCQ29uZmlnPiB0
ZW1wKGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3No
YXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogICAgICAg
ICAgICAgaWYgKG51bUF2YWlsYWJsZUNvbmZpZ3MpCiAgICAgICAgICAgICAgICAgbV9wYnVmZmVy
RkJDb25maWcgPSB0ZW1wWzBdOwotICAgICAgICAgICAgWEZyZWUodGVtcCk7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gbV9wYnVmZmVyRkJDb25maWc7CkBAIC04MCwyMyArODEsOCBAQCBw
dWJsaWM6CiAKICAgICBHTFhGQkNvbmZpZyBzdXJmYWNlQ29udGV4dENvbmZpZygpCiAgICAgewot
ICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykgewotICAgICAgICAgICAgc3Rh
dGljIGludCBhdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgICAgICAgICAgR0xYX0xFVkVMLCAwLAot
ICAgICAgICAgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKLSAgICAg
ICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JHQkFfQklULAotICAgICAgICAgICAg
ICAgIEdMWF9SRURfU0laRSwgICAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9HUkVFTl9TSVpF
LCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAotICAgICAgICAg
ICAgICAgIEdMWF9BTFBIQV9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9ERVBUSF9T
SVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBFLCBHTFhfVFJVRV9D
T0xPUiwKLSAgICAgICAgICAgICAgICBHTFhfRE9VQkxFQlVGRkVSLCAgVHJ1ZSwKLSAgICAgICAg
ICAgICAgICBOb25lCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBtX3N1cmZhY2VDb250
ZXh0RkJDb25maWcgPSBjcmVhdGVDb25maWcoYXR0cmlidXRlcyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpCisgICAgICAgICAgICBjcmVhdGVTdXJm
YWNlQ29uZmlnKCk7CiAKICAgICAgICAgcmV0dXJuIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsK
ICAgICB9CkBAIC0xMDgsNTYgKzk0LDU1IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgR0xYRkJDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pCisgICAg
dm9pZCBjcmVhdGVTdXJmYWNlQ29uZmlnKCkKICAgICB7Ci0gICAgICAgIGludCBudW1BdmFpbGFi
bGVDb25maWdzOwotICAgICAgICBtX3Zpc3VhbEluZm8gPSAwOwotICAgICAgICBHTFhGQkNvbmZp
ZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVl
bihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncyk7Cisg
ICAgICAgIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgR0xYX0xFVkVM
LCAwLAorICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAorICAg
ICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKKyAgICAgICAgICAgIEdM
WF9SRURfU0laRSwgICAgICAxLAorICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCisg
ICAgICAgICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgICAgIEdMWF9BTFBIQV9T
SVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX0RFUFRIX1NJWkUsICAgIDEsCisgICAgICAgICAg
ICBHTFhfWF9WSVNVQUxfVFlQRSwgR0xYX1RSVUVfQ09MT1IsCisgICAgICAgICAgICBHTFhfRE9V
QkxFQlVGRkVSLCAgVHJ1ZSwKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgfTsKIAotICAgICAg
ICBpZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3MpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7CisgICAgICAgIFNjb3BlZFhSZXNvdXJjZTxHTFhG
QkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIERlZmF1bHRT
Y3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3Mp
KTsKIAotICAgICAgICBHTFhGQkNvbmZpZyBzZWxlY3RlZENvbmZpZyA9IDA7Ci0gICAgICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzKSB7Cisg
ICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSAwOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAKKyAgICAgICAgU2NvcGVkWFJlc291cmNlPFhWaXN1YWxJbmZvPiBz
Y29wZWRWaXN1YWxJbmZvOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fdmlzdWFsSW5mbykKLSAgICAgICAg
ICAgICAgICBYRnJlZShtX3Zpc3VhbEluZm8pOwotCi0gICAgICAgICAgICBtX3Zpc3VhbEluZm8g
PSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wW2ldKTsKLSAg
ICAgICAgICAgIGlmICghbV92aXN1YWxJbmZvKQorICAgICAgICAgICAgc2NvcGVkVmlzdWFsSW5m
byA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBbaV0pOwor
ICAgICAgICAgICAgaWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICAgICAgaWYgKG1f
c3VwcG9ydHNYUmVuZGVyRXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgWFJlbmRlclBpY3RG
b3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkRGlzcGxheSwg
bV92aXN1YWxJbmZvLT52aXN1YWwpOworICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0
KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZERpc3BsYXksIHNjb3Bl
ZFZpc3VhbEluZm8tPnZpc3VhbCk7CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3Jt
YXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVk
Q29uZmlnID0gdGVtcFtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wW2ldOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKG1fdmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSNlbHNlCi0gICAgICAgICAg
ICBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9PSAzMikgewotI2VuZGlmCi0gICAgICAgICAgICAg
ICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250
ZXh0RkJDb25maWcgJiYgc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpCisgICAgICAgICAg
ICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVtcFtpXTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIERpZCBub3QgZmluZCBhbnkgdmlzdWFsIHN1cHBvcnRpbmcgYWxwaGEsIHNlbGVj
dCB0aGUgZmlyc3QgYXZhaWxhYmxlIGNvbmZpZy4KLSAgICAgICAgaWYgKCFmb3VuZCkgewotICAg
ICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wWzBdOwotICAgICAgICAgICAgbV92aXN1YWxJ
bmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgdGVtcFswXSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBYRnJlZSh0ZW1wKTsKLQotICAgICAgICByZXR1cm4gc2Vs
ZWN0ZWRDb25maWc7CisgICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKQorICAg
ICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVtcFswXTsKICAgICB9CiAKICAg
ICBHTFhGQkNvbmZpZyBtX3BidWZmZXJGQkNvbmZpZzsKICAgICBHTFhGQkNvbmZpZyBtX3N1cmZh
Y2VDb250ZXh0RkJDb25maWc7Ci0gICAgWFZpc3VhbEluZm8qIG1fdmlzdWFsSW5mbzsKICAgICBE
aXNwbGF5KiBtX3NoYXJlZERpc3BsYXk7CiAgICAgYm9vbCBtX3N1cHBvcnRzWFJlbmRlckV4dGVu
c2lvbjsKIH07CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCAyZDZjNGY0Li5lN2JhZjk0IDEwMDY0
NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1
cmZhY2UuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvR0xYU3VyZmFjZS5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBHTFhUcmFuc3BvcnRTdXJmYWNl
OjpHTFhUcmFuc3BvcnRTdXJmYWNlKCkKICAgICB9CiAKICAgICBtX2NvbmZpZ1NlbGVjdG9yID0g
YWRvcHRQdHIobmV3IEdMWENvbmZpZ1NlbGVjdG9yKG1fc2hhcmVkRGlzcGxheSwgbV9uYXRpdmVS
ZXNvdXJjZS0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpKTsKKyAgICBTY29wZWRYUmVz
b3VyY2U8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdTZWxlY3Rvci0+dmlzdWFsSW5mbygp
KTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbigpKSB7CisgICAgaWYgKCF2aXNJbmZvLmdldCgp
KSB7CiAgICAgICAgIGRlc3Ryb3koKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
bmF0aXZlUmVzb3VyY2UtPnNldFZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+dmlzdWFsSW5m
bygpKTsKLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZzY3JlZW5XaW5kb3coJm1fYnVm
ZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZTY3JlZW5XaW5kb3co
Jm1fYnVmZmVySGFuZGxlLCAqdmlzSW5mby5nZXQoKSk7CiAKICAgICBpZiAoIW1fYnVmZmVySGFu
ZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2Vz
LmNwcAppbmRleCA1YTU3YTgxLi4zMmMwNTAwIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNv
dXJjZXMuY3BwCkBAIC0zNCwxNyArMzQsMTIgQEAgU2hhcmVkWDExUmVzb3VyY2VzKiBTaGFyZWRY
MTFSZXNvdXJjZXM6Om1fc3RhdGljU2hhcmVkUmVzb3VyY2UgPSAwOwogCiBYMTFPZmZTY3JlZW5X
aW5kb3c6OlgxMU9mZlNjcmVlbldpbmRvdygpCiAgICAgOiBtX3NoYXJlZFJlc291cmNlcygwKQot
ICAgICwgbV9jb25maWdWaXN1YWxJbmZvKDApCiB7CiAgICAgbV9zaGFyZWRSZXNvdXJjZXMgPSBT
aGFyZWRYMTFSZXNvdXJjZXM6OmNyZWF0ZSgpOwogfQogCiBYMTFPZmZTY3JlZW5XaW5kb3c6On5Y
MTFPZmZTY3JlZW5XaW5kb3coKQogewotICAgIGlmIChtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAg
ICAgICAgWEZyZWUobV9jb25maWdWaXN1YWxJbmZvKTsKLSAgICAgICAgbV9jb25maWdWaXN1YWxJ
bmZvID0gMDsKLSAgICB9CiB9CiAKIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpyZVNpemVXaW5k
b3coY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luZG93SWQpCkBAIC01
Myw3ICs0OCw3IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpyZVNpemVXaW5kb3coY29uc3Qg
SW50UmVjdCYgbmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luCiAgICAgWEZsdXNoKG1fc2hhcmVk
UmVzb3VyY2VzLT54MTFEaXNwbGF5KCkpOwogfQogCi12b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6
Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKK3ZvaWQgWDExT2ZmU2Ny
ZWVuV2luZG93OjpjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkLCBjb25z
dCBYVmlzdWFsSW5mbyYgdmlzSW5mbywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAo
IW1fc2hhcmVkUmVzb3VyY2VzKQogICAgICAgICByZXR1cm47CkBAIC02Miw3ICs1Nyw3IEBAIHZv
aWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhh
bmRsZUlkKQogICAgIGlmICghZGlzcGxheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2NvbmZpZ1Zpc3VhbEluZm8pIHsKKyAgICBpZiAoIXZpc0luZm8udmlzdWFsKSB7CiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZpbmQgdmFsaWQgWFZpc3VhbC4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTcxLDEzICs2NiwxMyBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6
Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKICAgICBpZiAoIXhXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3Jt
YXAoZGlzcGxheSwgeFdpbmRvdywgbV9jb25maWdWaXN1YWxJbmZvLT52aXN1YWwsIEFsbG9jTm9u
ZSk7CisgICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCB4V2luZG93
LCB2aXNJbmZvLnZpc3VhbCwgQWxsb2NOb25lKTsKICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBh
dHRyaWJ1dGU7CiAgICAgYXR0cmlidXRlLmJhY2tncm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKGRp
c3BsYXksIDApOwogICAgIGF0dHJpYnV0ZS5ib3JkZXJfcGl4ZWwgPSBCbGFja1BpeGVsKGRpc3Bs
YXksIDApOwogICAgIGF0dHJpYnV0ZS5jb2xvcm1hcCA9IGNtYXA7CiAgICAgdWludDMyX3QgdGVt
cEhhbmRsZUlkOwotICAgIHRlbXBIYW5kbGVJZCA9IFhDcmVhdGVXaW5kb3coZGlzcGxheSwgeFdp
bmRvdywgMCwgMCwgMSwgMSwgMCwgbV9jb25maWdWaXN1YWxJbmZvLT5kZXB0aCwgSW5wdXRPdXRw
dXQsIG1fY29uZmlnVmlzdWFsSW5mby0+dmlzdWFsLCBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4
ZWwgfCBDV0NvbG9ybWFwLCAmYXR0cmlidXRlKTsKKyAgICB0ZW1wSGFuZGxlSWQgPSBYQ3JlYXRl
V2luZG93KGRpc3BsYXksIHhXaW5kb3csIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgMCwgdmlzSW5mby5kZXB0aCwgSW5wdXRPdXRwdXQsIHZpc0luZm8udmlzdWFsLCBDV0JhY2tQ
aXhlbCB8IENXQm9yZGVyUGl4ZWwgfCBDV0NvbG9ybWFwLCAmYXR0cmlidXRlKTsKIAogICAgIGlm
ICghdGVtcEhhbmRsZUlkKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBv
ZmZzY3JlZW4gd2luZG93LiIpOwpAQCAtODUsODggKzgwLDY1IEBAIHZvaWQgWDExT2ZmU2NyZWVu
V2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIH0K
IAogICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwKGRpc3BsYXksIHRlbXBIYW5kbGVJZCwg
MCk7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2lu
ZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworI2Vu
ZGlmCisgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQpOwogICAgICpoYW5kbGVJ
ZCA9IHRlbXBIYW5kbGVJZDsKLQotICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVy
RXh0ZW5zaW9uU3VwcG9ydGVkKCkpCi0gICAgICAgIFhNYXBXaW5kb3coZGlzcGxheSwgdGVtcEhh
bmRsZUlkKTsKLQotfQotCi12b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyhj
b25zdCB1aW50MzJfdCB3aW5kb3dJZCkKLXsKLSAgICBpZiAoIXdpbmRvd0lkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURp
c3BsYXkoKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFhEZXN0
cm95V2luZG93KGRpc3BsYXksIHdpbmRvd0lkKTsKLX0KLQotRGlzcGxheSogWDExT2ZmU2NyZWVu
V2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFy
ZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKIH0KIAogI2lmIFVTRShFR0wpCi1ib29sIFgxMU9m
ZlNjcmVlbldpbmRvdzo6c2V0VmlzdWFsSWQoY29uc3QgRUdMaW50IGlkKQordm9pZCBYMTFPZmZT
Y3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQsIGNv
bnN0IEVHTGludCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBWaXN1YWxJRCB2aXN1
YWxJZCA9IHN0YXRpY19jYXN0PFZpc3VhbElEPihpZCk7CiAKICAgICBpZiAoIXZpc3VhbElkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgIC8vIEVHTCBoYXMg
c3VnZ2VzdGVkIGEgdmlzdWFsIGlkLCBzbyBnZXQgdGhlIHJlc3Qgb2YgdGhlIHZpc3VhbCBpbmZv
IGZvciB0aGF0IGlkLgogICAgIFhWaXN1YWxJbmZvIHZpc3VhbEluZm9UZW1wbGF0ZTsKICAgICBt
ZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAg
dmlzdWFsSW5mb1RlbXBsYXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7Ci0KLSAgICBYVmlzdWFsSW5m
byogY2hvc2VuVmlzdWFsSW5mbzsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAgY2hv
c2VuVmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNw
bGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQp
OwotICAgIGlmIChjaG9zZW5WaXN1YWxJbmZvKSB7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Ci0gICAgICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9y
dGVkKCkpIHsKLSAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVy
RmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBjaG9zZW5W
aXN1YWxJbmZvLT52aXN1YWwpOwotICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRp
cmVjdC5hbHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZv
ID0gY2hvc2VuVmlzdWFsSW5mbzsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChjaG9zZW5WaXN1YWxJbmZv
LT5kZXB0aCA9PSAzMikgewotICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hvc2Vu
VmlzdWFsSW5mbzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQor
ICAgIFNjb3BlZFhSZXNvdXJjZTxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1
YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZp
c3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBYVmlzdWFsSW5mbyogZm91
bmRWaXN1YWwgPSAwOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAg
bWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwotICAg
ICAgICBYVmlzdWFsSW5mbyogbWF0Y2hpbmdWaXN1YWxzOwotICAgICAgICBpbnQgbWF0Y2hpbmdD
b3VudCA9IDA7CisgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgeworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaTwgbWF0Y2hpbmdDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBYVmlzdWFsSW5mbyog
dGVtcCA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07CiAKLSAgICAgICAgdmlzdWFsSW5mb1RlbXBsYXRl
LmRlcHRoID0gY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGg7Ci0gICAgICAgIG1hdGNoaW5nVmlzdWFs
cyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3Vh
bERlcHRoTWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOworICAgICAg
ICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQo
KSkgeworICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVy
RmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCB0ZW1wLT52
aXN1YWwpOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxw
aGFNYXNrID4gMCkKKyAgICAgICAgICAgICAgICAgICAgZm91bmRWaXN1YWwgPSB0ZW1wOworICAg
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKLSAgICAgICAgICAg
IG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07Ci0gICAgICAgICAgICBY
RnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBpZiAoIWZvdW5kVmlzdWFsICYmIHRlbXAtPmRlcHRoID09IDMyKQorICAgICAgICAgICAg
ICAgIGZvdW5kVmlzdWFsID0gdGVtcDsKICAgICAgICAgfQorCisgICAgICAgIGlmIChmb3VuZFZp
c3VhbCkKKyAgICAgICAgICAgIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyhoYW5kbGVJZCwgKmZvdW5k
VmlzdWFsLCBzaXplKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgWFZpc3VhbCBJbmZvLiIpOwor
I2VuZGlmCiAKLSAgICByZXR1cm4gZmFsc2U7Cit2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVz
dHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKK3sKKyAgICBpZiAoIXdpbmRvd0lk
KQorICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gbV9zaGFyZWRSZXNv
dXJjZXMtPngxMURpc3BsYXkoKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybjsK
KworICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvd0lkKTsKIH0KLSNlbmRpZgogCi12
b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6c2V0VmlzdWFsSW5mbyhYVmlzdWFsSW5mbyogdmlzSW5m
bykKK0Rpc3BsYXkqIFgxMU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNv
bnN0CiB7Ci0gICAgbV9jb25maWdWaXN1YWxJbmZvID0gdmlzSW5mbzsKKyAgICByZXR1cm4gbV9z
aGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKIH0KIAogYm9vbCBYMTFPZmZTY3JlZW5XaW5k
b3c6OmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpIGNvbnN0CmRpZmYgLS1naXQgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNl
cy5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5k
b3dSZXNvdXJjZXMuaAppbmRleCBhMzk4NjVkLi5kMWU5YmRiIDEwMDY0NAotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5o
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2lu
ZG93UmVzb3VyY2VzLmgKQEAgLTMwLDExICszMCwxNCBAQAogCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogCi0jaW5jbHVkZSA8b3BlbmdsL0dMRGVmcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAorI2lmIFVTRShFR0wpCisjaW5jbHVkZSA8b3BlbmdsL0dMRGVmcy5oPgorI2VuZGlm
CisKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9Y
Y29tcG9zaXRlLmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHJlbmRlci5oPgpAQCAtNDIs
NiArNDUsMzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IFNjb3BlZFhSZXNvdXJjZSB7CisKKyAgICBTY29wZWRYUmVzb3VyY2UoKSA6IG1f
eFJlc291cmNlKDApIHsgfQorICAgIFNjb3BlZFhSZXNvdXJjZShUKiB4UmVzb3VyY2UpIDogbV94
UmVzb3VyY2UoeFJlc291cmNlKSB7IH0KKworICAgIH5TY29wZWRYUmVzb3VyY2UoKQorICAgIHsK
KyAgICAgICAgaWYgKG1feFJlc291cmNlKQorICAgICAgICAgICAgWEZyZWUobV94UmVzb3VyY2Up
OworICAgIH0KKworICAgIFNjb3BlZFhSZXNvdXJjZSYgb3BlcmF0b3I9KFQqIHhSZXNvdXJjZSkK
KyAgICB7CisgICAgICAgIGlmIChtX3hSZXNvdXJjZSkKKyAgICAgICAgICAgIFhGcmVlKG1feFJl
c291cmNlKTsKKworICAgICAgICBtX3hSZXNvdXJjZSA9IHhSZXNvdXJjZTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIG9wZXJhdG9yIFQqKCkgY29uc3QgeyByZXR1cm4gbV94
UmVzb3VyY2U7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV94UmVzb3Vy
Y2U7IH0KKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsgfQorCitwcml2
YXRlOgorICAgIFNjb3BlZFhSZXNvdXJjZShjb25zdCBTY29wZWRYUmVzb3VyY2UmKTsKKyAgICBT
Y29wZWRYUmVzb3VyY2UmIG9wZXJhdG9yPShjb25zdCBTY29wZWRYUmVzb3VyY2UmKTsKKyAgICBz
dGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3IChzaXplX3QpOworICAgIHN0YXRpYyB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSAodm9pZCopOworICAgIFQqIG1feFJlc291cmNlOworfTsKKwogY2xhc3MgU2hh
cmVkWDExUmVzb3VyY2VzIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNoYXJlZFgxMVJlc291cmNlcyk7CiAKQEAgLTE0MywxOSArMTc5LDE4
IEBAIGNsYXNzIFgxMU9mZlNjcmVlbldpbmRvdyB7CiBwdWJsaWM6CiAgICAgWDExT2ZmU2NyZWVu
V2luZG93KCk7CiAgICAgdmlydHVhbCB+WDExT2ZmU2NyZWVuV2luZG93KCk7Ci0gICAgdm9pZCBj
cmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqKTsKKyAgICB2b2lkIGNyZWF0ZU9mZlNjcmVl
bldpbmRvdyh1aW50MzJfdCosIGNvbnN0IFhWaXN1YWxJbmZvJiwgY29uc3QgSW50U2l6ZSYgPSBJ
bnRTaXplKDEsIDEpKTsKKyNpZiBVU0UoRUdMKQorICAgIHZvaWQgY3JlYXRlT2ZmU2NyZWVuV2lu
ZG93KHVpbnQzMl90KiwgY29uc3QgRUdMaW50LCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwg
MSkpOworI2VuZGlmCiAgICAgdm9pZCBkZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90KTsKICAg
ICB2b2lkIHJlU2l6ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiwgY29uc3QgdWludDMyX3QpOwogICAg
IERpc3BsYXkqIG5hdGl2ZVNoYXJlZERpc3BsYXkoKSBjb25zdDsKLSNpZiBVU0UoRUdMKQotICAg
IGJvb2wgc2V0VmlzdWFsSWQoY29uc3QgRUdMaW50KTsKLSNlbmRpZgogICAgIHZvaWQgc2V0Vmlz
dWFsSW5mbyhYVmlzdWFsSW5mbyopOwogICAgIGJvb2wgaXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9y
dGVkKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFgxMVJlc291cmNlcz4g
bV9zaGFyZWRSZXNvdXJjZXM7Ci0gICAgWFZpc3VhbEluZm8qIG1fY29uZmlnVmlzdWFsSW5mbzsK
IH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183837</attachid>
            <date>2013-01-21 15:20:12 -0800</date>
            <delta_ts>2013-01-26 07:03:20 -0800</delta_ts>
            <desc>patchv4</desc>
            <filename>memleakchanges.patch</filename>
            <type>text/plain</type>
            <size>18343</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1ZTYxM2IuLjlmMjVlYzUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEz
LTAxLTIwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRWZsXVtXZWJHTF0gQWRkIGJldHRlciBzdXBwb3J0IHRvIHRyYWNrIGFuZCBm
cmVlIFhSZXNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDczOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBsZWFrIE1lbW9yeSBkdXJpbmcgY29uZmlnIHNlbGVjdGlvbiBhcyB3ZSBkb250
IGZyZWUgdGVtcAorICAgICAgICBhbGxvY2F0ZWQgdmlzdWFscywgY29uZmlnIGV0Yy4gVGhpcyBw
YXRjaCBlbnN1cmVzIHRoYXQgd2UgZG9udCBsZWFrIGFueQorICAgICAgICBtZW1vcnkuCisKKyAg
ICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBXZWJHTCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxl
Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OkdMWENvbmZpZ1Nl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjp2aXN1YWxJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4dENv
bmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNvbnRl
eHRDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OmNyZWF0ZVN1
cmZhY2VDb25maWcpOgorICAgICAgICAoR0xYQ29uZmlnU2VsZWN0b3IpOgorICAgICAgICBSZW1v
dmVkIFZpc3VhbEluZm8gYXMgbWVtYmVyIHZhcmlhYmxlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHTFhUcmFuc3BvcnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93
UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6flgx
MU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6
OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaDoKKyAg
ICAgICAgUmVtb3ZlZCB1bnVzZWQgY29kZS4gRml4ZWQgbWVtb3J5IGxlYWtzLgorCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFNjb3BlZFhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRYUmVzb3VyY2U6OlNjb3BlZFhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y29wZWRYUmVzb3VyY2U6On5TY29wZWRYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkWFJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFJlc291
cmNlOjpvcGVyYXRvciBUKik6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRYUmVzb3VyY2U6Om9w
ZXJhdG9yLT4pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFJlc291cmNlOjpnZXQpOgorICAg
ICAgICAoWDExT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgQ2FsbHMgWEZyZWUgb24gIHBvaW50
ZXIgdG8gbWVtb3J5IGFsbG9jYXRlZCBieSBYIHdoZW4gdGhlIGNsYXNzIGdvZXMgb3V0IG9mIHNj
b3BlLgorCiAyMDEzLTAxLTE5ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXZWJHTF0gUmVncmVzc2lvbjogV2ViR0wgQ29u
dGVudCBpcyBub3QgZHJhd24gYWZ0ZXIgcmVzaXppbmcgdGhlIGNhbnZhcy4KZGlmZiAtLWdpdCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5j
cHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZh
Y2UuY3BwCmluZGV4IGI1MjRhYjUuLjI2ZDU2YTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcApAQCAt
NTcsMTIgKzU3LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fbmF0aXZl
UmVzb3VyY2UtPnNldFZpc3VhbElkKHZpc3VhbElkKSkgewotICAgICAgICBkZXN0cm95KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZz
Y3JlZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVh
dGVPZmZTY3JlZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlLCB2aXN1YWxJZCk7CiAKICAgICBpZiAo
IW1fYnVmZmVySGFuZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3Iu
aCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmln
U2VsZWN0b3IuaAppbmRleCA3ZTBjZmMwLi5mOGQ0Mjg0IDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBHTFhDb25maWdTZWxlY3Rv
cihEaXNwbGF5KiB4RGlzcGxheSwgYm9vbCBzdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pCiAgICAg
ICAgIDogbV9wYnVmZmVyRkJDb25maWcoMCkKICAgICAgICAgLCBtX3N1cmZhY2VDb250ZXh0RkJD
b25maWcoMCkKLSAgICAgICAgLCBtX3Zpc3VhbEluZm8oMCkKICAgICAgICAgLCBtX3NoYXJlZERp
c3BsYXkoeERpc3BsYXkpCiAgICAgICAgICwgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24oc3Vw
cG9ydHNYUmVuZGVyRXh0ZW5zaW9uKQogICAgIHsKQEAgLTQ5LDkgKzQ4LDEyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKSBjb25zdAorICAg
IFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Zpc3Vh
bEluZm87CisgICAgICAgIGlmICghc3VyZmFjZUNvbnRleHRDb25maWcoKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworCisgICAgICAgIHJldHVybiBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9z
aGFyZWREaXNwbGF5LCBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpOwogICAgIH0KIAogICAgIEdM
WEZCQ29uZmlnIHBCdWZmZXJDb250ZXh0Q29uZmlnKCkKQEAgLTY5LDEwICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdz
OwotICAgICAgICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VGQkNvbmZpZyhtX3No
YXJlZERpc3BsYXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywg
Jm51bUF2YWlsYWJsZUNvbmZpZ3MpOworICAgICAgICAgICAgU2NvcGVkWFJlc291cmNlPEdMWEZC
Q29uZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNj
cmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykp
OwogICAgICAgICAgICAgaWYgKG51bUF2YWlsYWJsZUNvbmZpZ3MpCiAgICAgICAgICAgICAgICAg
bV9wYnVmZmVyRkJDb25maWcgPSB0ZW1wWzBdOwotICAgICAgICAgICAgWEZyZWUodGVtcCk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbV9wYnVmZmVyRkJDb25maWc7CkBAIC04MCwyMyAr
ODEsOCBAQCBwdWJsaWM6CiAKICAgICBHTFhGQkNvbmZpZyBzdXJmYWNlQ29udGV4dENvbmZpZygp
CiAgICAgewotICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykgewotICAgICAg
ICAgICAgc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgICAgICAgICAgR0xYX0xF
VkVMLCAwLAotICAgICAgICAgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJ
VCwKLSAgICAgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JHQkFfQklULAotICAg
ICAgICAgICAgICAgIEdMWF9SRURfU0laRSwgICAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9H
UkVFTl9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAot
ICAgICAgICAgICAgICAgIEdMWF9BTFBIQV9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdM
WF9ERVBUSF9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBFLCBH
TFhfVFJVRV9DT0xPUiwKLSAgICAgICAgICAgICAgICBHTFhfRE9VQkxFQlVGRkVSLCAgVHJ1ZSwK
LSAgICAgICAgICAgICAgICBOb25lCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBtX3N1
cmZhY2VDb250ZXh0RkJDb25maWcgPSBjcmVhdGVDb25maWcoYXR0cmlidXRlcyk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpCisgICAgICAgICAgICBj
cmVhdGVTdXJmYWNlQ29uZmlnKCk7CiAKICAgICAgICAgcmV0dXJuIG1fc3VyZmFjZUNvbnRleHRG
QkNvbmZpZzsKICAgICB9CkBAIC0xMDgsNTYgKzk0LDU1IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgR0xYRkJDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVz
W10pCisgICAgdm9pZCBjcmVhdGVTdXJmYWNlQ29uZmlnKCkKICAgICB7Ci0gICAgICAgIGludCBu
dW1BdmFpbGFibGVDb25maWdzOwotICAgICAgICBtX3Zpc3VhbEluZm8gPSAwOwotICAgICAgICBH
TFhGQkNvbmZpZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVm
YXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29u
Zmlncyk7CisgICAgICAgIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAg
R0xYX0xFVkVMLCAwLAorICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1df
QklULAorICAgICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKKyAgICAg
ICAgICAgIEdMWF9SRURfU0laRSwgICAgICAxLAorICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUs
ICAgIDEsCisgICAgICAgICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgICAgIEdM
WF9BTFBIQV9TSVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX0RFUFRIX1NJWkUsICAgIDEsCisg
ICAgICAgICAgICBHTFhfWF9WSVNVQUxfVFlQRSwgR0xYX1RSVUVfQ09MT1IsCisgICAgICAgICAg
ICBHTFhfRE9VQkxFQlVGRkVSLCAgVHJ1ZSwKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgfTsK
IAotICAgICAgICBpZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3MpCi0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7CisgICAgICAgIFNjb3BlZFhSZXNv
dXJjZTxHTFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3BsYXks
IERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWlsYWJs
ZUNvbmZpZ3MpKTsKIAotICAgICAgICBHTFhGQkNvbmZpZyBzZWxlY3RlZENvbmZpZyA9IDA7Ci0g
ICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25m
aWdzKSB7CisgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSAwOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgU2NvcGVkWFJlc291cmNlPFhWaXN1
YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUF2YWlsYWJsZUNvbmZpZ3M7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fdmlzdWFsSW5mbykK
LSAgICAgICAgICAgICAgICBYRnJlZShtX3Zpc3VhbEluZm8pOwotCi0gICAgICAgICAgICBtX3Zp
c3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1w
W2ldKTsKLSAgICAgICAgICAgIGlmICghbV92aXN1YWxJbmZvKQorICAgICAgICAgICAgc2NvcGVk
VmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRl
bXBbaV0pOworICAgICAgICAgICAgaWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICAg
ICAgaWYgKG1fc3VwcG9ydHNYUmVuZGVyRXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgWFJl
bmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVk
RGlzcGxheSwgbV92aXN1YWxJbmZvLT52aXN1YWwpOworICAgICAgICAgICAgICAgIFhSZW5kZXJQ
aWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZERpc3Bs
YXksIHNjb3BlZFZpc3VhbEluZm8tPnZpc3VhbCk7CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1h
dCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGVjdGVkQ29uZmlnID0gdGVtcFtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1w
W2ldOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKG1fdmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSNlbHNlCi0g
ICAgICAgICAgICBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9PSAzMikgewotI2VuZGlmCi0gICAg
ICAgICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKICAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgaWYgKCFtX3N1
cmZhY2VDb250ZXh0RkJDb25maWcgJiYgc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpCisg
ICAgICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVtcFtpXTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIERpZCBub3QgZmluZCBhbnkgdmlzdWFsIHN1cHBvcnRpbmcgYWxw
aGEsIHNlbGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlIGNvbmZpZy4KLSAgICAgICAgaWYgKCFmb3Vu
ZCkgewotICAgICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wWzBdOwotICAgICAgICAgICAg
bV92aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwg
dGVtcFswXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBYRnJlZSh0ZW1wKTsKLQotICAgICAgICBy
ZXR1cm4gc2VsZWN0ZWRDb25maWc7CisgICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29u
ZmlnKQorICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVtcFswXTsKICAg
ICB9CiAKICAgICBHTFhGQkNvbmZpZyBtX3BidWZmZXJGQkNvbmZpZzsKICAgICBHTFhGQkNvbmZp
ZyBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7Ci0gICAgWFZpc3VhbEluZm8qIG1fdmlzdWFsSW5m
bzsKICAgICBEaXNwbGF5KiBtX3NoYXJlZERpc3BsYXk7CiAgICAgYm9vbCBtX3N1cHBvcnRzWFJl
bmRlckV4dGVuc2lvbjsKIH07CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCAyZDZjNGY0Li5lN2Jh
Zjk0IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWFN1cmZhY2UuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBHTFhUcmFuc3Bv
cnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKCkKICAgICB9CiAKICAgICBtX2NvbmZpZ1Nl
bGVjdG9yID0gYWRvcHRQdHIobmV3IEdMWENvbmZpZ1NlbGVjdG9yKG1fc2hhcmVkRGlzcGxheSwg
bV9uYXRpdmVSZXNvdXJjZS0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpKTsKKyAgICBT
Y29wZWRYUmVzb3VyY2U8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdTZWxlY3Rvci0+dmlz
dWFsSW5mbygpKTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbigpKSB7CisgICAgaWYgKCF2aXNJ
bmZvLmdldCgpKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fbmF0aXZlUmVzb3VyY2UtPnNldFZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+
dmlzdWFsSW5mbygpKTsKLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZzY3JlZW5XaW5k
b3coJm1fYnVmZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZTY3Jl
ZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlLCAqdmlzSW5mby5nZXQoKSk7CiAKICAgICBpZiAoIW1f
YnVmZmVySGFuZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNw
cCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93
UmVzb3VyY2VzLmNwcAppbmRleCA1YTU3YTgxLi4wMGU5OGM5IDEwMDY0NAotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5j
cHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFX
aW5kb3dSZXNvdXJjZXMuY3BwCkBAIC0zNCwxNyArMzQsMTIgQEAgU2hhcmVkWDExUmVzb3VyY2Vz
KiBTaGFyZWRYMTFSZXNvdXJjZXM6Om1fc3RhdGljU2hhcmVkUmVzb3VyY2UgPSAwOwogCiBYMTFP
ZmZTY3JlZW5XaW5kb3c6OlgxMU9mZlNjcmVlbldpbmRvdygpCiAgICAgOiBtX3NoYXJlZFJlc291
cmNlcygwKQotICAgICwgbV9jb25maWdWaXN1YWxJbmZvKDApCiB7CiAgICAgbV9zaGFyZWRSZXNv
dXJjZXMgPSBTaGFyZWRYMTFSZXNvdXJjZXM6OmNyZWF0ZSgpOwogfQogCiBYMTFPZmZTY3JlZW5X
aW5kb3c6On5YMTFPZmZTY3JlZW5XaW5kb3coKQogewotICAgIGlmIChtX2NvbmZpZ1Zpc3VhbElu
Zm8pIHsKLSAgICAgICAgWEZyZWUobV9jb25maWdWaXN1YWxJbmZvKTsKLSAgICAgICAgbV9jb25m
aWdWaXN1YWxJbmZvID0gMDsKLSAgICB9CiB9CiAKIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93Ojpy
ZVNpemVXaW5kb3coY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luZG93
SWQpCkBAIC01Myw3ICs0OCw4IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpyZVNpemVXaW5k
b3coY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luCiAgICAgWEZsdXNo
KG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCkpOwogfQogCi12b2lkIFgxMU9mZlNjcmVl
bldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkLCBjb25zdCBYVmlzdWFsSW5mbyYgdmlzSW5m
bywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoIW1fc2hhcmVkUmVzb3VyY2VzKQog
ICAgICAgICByZXR1cm47CkBAIC02Miw3ICs1OCw3IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93
OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIGlmICghZGlz
cGxheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pIHsK
KyAgICBpZiAoIXZpc0luZm8udmlzdWFsKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGZpbmQgdmFsaWQgWFZpc3VhbC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDEz
ICs2NywxMyBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93
KHVpbnQzMl90KiBoYW5kbGVJZCkKICAgICBpZiAoIXhXaW5kb3cpCiAgICAgICAgIHJldHVybjsK
IAotICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgeFdpbmRvdywg
bV9jb25maWdWaXN1YWxJbmZvLT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAgQ29sb3JtYXAgY21h
cCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCB4V2luZG93LCB2aXNJbmZvLnZpc3VhbCwgQWxs
b2NOb25lKTsKICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGU7CiAgICAgYXR0cmli
dXRlLmJhY2tncm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKGRpc3BsYXksIDApOwogICAgIGF0dHJp
YnV0ZS5ib3JkZXJfcGl4ZWwgPSBCbGFja1BpeGVsKGRpc3BsYXksIDApOwogICAgIGF0dHJpYnV0
ZS5jb2xvcm1hcCA9IGNtYXA7CiAgICAgdWludDMyX3QgdGVtcEhhbmRsZUlkOwotICAgIHRlbXBI
YW5kbGVJZCA9IFhDcmVhdGVXaW5kb3coZGlzcGxheSwgeFdpbmRvdywgMCwgMCwgMSwgMSwgMCwg
bV9jb25maWdWaXN1YWxJbmZvLT5kZXB0aCwgSW5wdXRPdXRwdXQsIG1fY29uZmlnVmlzdWFsSW5m
by0+dmlzdWFsLCBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4ZWwgfCBDV0NvbG9ybWFwLCAmYXR0
cmlidXRlKTsKKyAgICB0ZW1wSGFuZGxlSWQgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksIHhXaW5k
b3csIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgdmlzSW5mby5kZXB0aCwg
SW5wdXRPdXRwdXQsIHZpc0luZm8udmlzdWFsLCBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4ZWwg
fCBDV0NvbG9ybWFwLCAmYXR0cmlidXRlKTsKIAogICAgIGlmICghdGVtcEhhbmRsZUlkKSB7CiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBvZmZzY3JlZW4gd2luZG93LiIpOwpA
QCAtODYsODcgKzgyLDYzIEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3Jl
ZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogCiAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQ
aXhtYXAoZGlzcGxheSwgdGVtcEhhbmRsZUlkLCAwKTsKICAgICBYQ29tcG9zaXRlUmVkaXJlY3RX
aW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlkLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7Cisg
ICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQpOwogICAgICpoYW5kbGVJZCA9IHRl
bXBIYW5kbGVJZDsKLQotICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5z
aW9uU3VwcG9ydGVkKCkpCi0gICAgICAgIFhNYXBXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlk
KTsKLQotfQotCi12b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyhjb25zdCB1
aW50MzJfdCB3aW5kb3dJZCkKLXsKLSAgICBpZiAoIXdpbmRvd0lkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFhEZXN0cm95V2lu
ZG93KGRpc3BsYXksIHdpbmRvd0lkKTsKLX0KLQotRGlzcGxheSogWDExT2ZmU2NyZWVuV2luZG93
OjpuYXRpdmVTaGFyZWREaXNwbGF5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRSZXNv
dXJjZXMtPngxMURpc3BsYXkoKTsKIH0KIAogI2lmIFVTRShFR0wpCi1ib29sIFgxMU9mZlNjcmVl
bldpbmRvdzo6c2V0VmlzdWFsSWQoY29uc3QgRUdMaW50IGlkKQordm9pZCBYMTFPZmZTY3JlZW5X
aW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQsIGNvbnN0IEVH
TGludCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBWaXN1YWxJRCB2aXN1YWxJZCA9
IHN0YXRpY19jYXN0PFZpc3VhbElEPihpZCk7CiAKICAgICBpZiAoIXZpc3VhbElkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgIC8vIEVHTCBoYXMgc3VnZ2Vz
dGVkIGEgdmlzdWFsIGlkLCBzbyBnZXQgdGhlIHJlc3Qgb2YgdGhlIHZpc3VhbCBpbmZvIGZvciB0
aGF0IGlkLgogICAgIFhWaXN1YWxJbmZvIHZpc3VhbEluZm9UZW1wbGF0ZTsKICAgICBtZW1zZXQo
JnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFs
SW5mb1RlbXBsYXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7Ci0KLSAgICBYVmlzdWFsSW5mbyogY2hv
c2VuVmlzdWFsSW5mbzsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAgY2hvc2VuVmlz
dWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCks
IFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOwotICAg
IGlmIChjaG9zZW5WaXN1YWxJbmZvKSB7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAg
ICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkp
IHsKLSAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZp
c3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBjaG9zZW5WaXN1YWxJ
bmZvLT52aXN1YWwpOwotICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5h
bHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hv
c2VuVmlzdWFsSW5mbzsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChjaG9zZW5WaXN1YWxJbmZvLT5kZXB0
aCA9PSAzMikgewotICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hvc2VuVmlzdWFs
SW5mbzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQorICAgIFNj
b3BlZFhSZXNvdXJjZTxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZv
KG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbElu
Zm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBYVmlzdWFsSW5mbyogZm91bmRWaXN1
YWwgPSAwOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAgbWVtc2V0
KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwotICAgICAgICBY
VmlzdWFsSW5mbyogbWF0Y2hpbmdWaXN1YWxzOwotICAgICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9
IDA7CisgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgeworICAgICAgICBmb3IgKGludCBpID0gMDsg
aTwgbWF0Y2hpbmdDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBYVmlzdWFsSW5mbyogdGVtcCA9
ICZtYXRjaGluZ1Zpc3VhbHNbMF07CiAKLSAgICAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLmRlcHRo
ID0gY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGg7Ci0gICAgICAgIG1hdGNoaW5nVmlzdWFscyA9IFhH
ZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbERlcHRo
TWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOworICAgICAgICAgICAg
aWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkgewor
ICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZp
c3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCB0ZW1wLT52aXN1YWwp
OworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNr
ID4gMCkKKyAgICAgICAgICAgICAgICAgICAgZm91bmRWaXN1YWwgPSB0ZW1wOworICAgICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKLSAgICAgICAgICAgIG1fY29u
ZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07Ci0gICAgICAgICAgICBYRnJlZSht
YXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBp
ZiAoIWZvdW5kVmlzdWFsICYmIHRlbXAtPmRlcHRoID09IDMyKQorICAgICAgICAgICAgICAgIGZv
dW5kVmlzdWFsID0gdGVtcDsKICAgICAgICAgfQorCisgICAgICAgIGlmIChmb3VuZFZpc3VhbCkK
KyAgICAgICAgICAgIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyhoYW5kbGVJZCwgKmZvdW5kVmlzdWFs
LCBzaXplKTsKICAgICB9Cit9CisjZW5kaWYKIAotICAgIGlmICghbV9jb25maWdWaXN1YWxJbmZv
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBYVmlzdWFsIEluZm8uIik7
CisjZW5kaWYKIAotICAgIHJldHVybiBmYWxzZTsKK3ZvaWQgWDExT2ZmU2NyZWVuV2luZG93Ojpk
ZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQoreworICAgIGlmICghd2luZG93
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3NoYXJlZFJl
c291cmNlcy0+eDExRGlzcGxheSgpOworICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93SWQpOwogfQotI2VuZGlmCiAK
LXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZvKiB2aXNJ
bmZvKQorRGlzcGxheSogWDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KCkg
Y29uc3QKIHsKLSAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSB2aXNJbmZvOworICAgIHJldHVybiBt
X3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogfQogCiBib29sIFgxMU9mZlNjcmVlbldp
bmRvdzo6aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkgY29uc3QKZGlmZiAtLWdpdCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3Vy
Y2VzLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdp
bmRvd1Jlc291cmNlcy5oCmluZGV4IGEzOTg2NWQuLmE2ZGZhOTcgMTAwNjQ0Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2Vz
LmgKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFX
aW5kb3dSZXNvdXJjZXMuaApAQCAtMzAsMTEgKzMwLDE0IEBACiAKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAKLSNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CisjZW5k
aWYKKwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25z
L1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+CkBAIC00
Miw2ICs0NSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgU2NvcGVkWFJlc291cmNlIHsKKworICAgIFNjb3BlZFhSZXNvdXJjZSgpIDog
bV94UmVzb3VyY2UoMCkgeyB9CisgICAgU2NvcGVkWFJlc291cmNlKFQqIHhSZXNvdXJjZSkgOiBt
X3hSZXNvdXJjZSh4UmVzb3VyY2UpIHsgfQorCisgICAgflNjb3BlZFhSZXNvdXJjZSgpCisgICAg
eworICAgICAgICBpZiAobV94UmVzb3VyY2UpCisgICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJj
ZSk7CisgICAgfQorCisgICAgU2NvcGVkWFJlc291cmNlJiBvcGVyYXRvcj0oVCogeFJlc291cmNl
KQorICAgIHsKKyAgICAgICAgaWYgKG1feFJlc291cmNlKQorICAgICAgICAgICAgWEZyZWUobV94
UmVzb3VyY2UpOworCisgICAgICAgIG1feFJlc291cmNlID0geFJlc291cmNlOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJldHVybiBt
X3hSZXNvdXJjZTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3hSZXNv
dXJjZTsgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisKK3By
aXZhdGU6CisgICAgU2NvcGVkWFJlc291cmNlKGNvbnN0IFNjb3BlZFhSZXNvdXJjZSYpOworICAg
IFNjb3BlZFhSZXNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IFNjb3BlZFhSZXNvdXJjZSYpOworICAg
IHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCk7CisgICAgc3RhdGljIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlICh2b2lkKik7CisgICAgVCogbV94UmVzb3VyY2U7Cit9OworCiBjbGFzcyBT
aGFyZWRYMTFSZXNvdXJjZXMgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkWDExUmVzb3VyY2VzKTsKIApAQCAtMTQzLDE5ICsxNzks
MTkgQEAgY2xhc3MgWDExT2ZmU2NyZWVuV2luZG93IHsKIHB1YmxpYzoKICAgICBYMTFPZmZTY3Jl
ZW5XaW5kb3coKTsKICAgICB2aXJ0dWFsIH5YMTFPZmZTY3JlZW5XaW5kb3coKTsKLSAgICB2b2lk
IGNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCopOworI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQorICAgIHZvaWQgY3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiwgY29uc3QgWFZp
c3VhbEluZm8mLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOworI2lmIFVTRShFR0wp
CisgICAgdm9pZCBjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqLCBjb25zdCBFR0xpbnQs
IGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgxLCAxKSk7CisjZW5kaWYKKyNlbmRpZgogICAgIHZv
aWQgZGVzdHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCk7CiAgICAgdm9pZCByZVNpemVXaW5kb3co
Y29uc3QgSW50UmVjdCYsIGNvbnN0IHVpbnQzMl90KTsKICAgICBEaXNwbGF5KiBuYXRpdmVTaGFy
ZWREaXNwbGF5KCkgY29uc3Q7Ci0jaWYgVVNFKEVHTCkKLSAgICBib29sIHNldFZpc3VhbElkKGNv
bnN0IEVHTGludCk7Ci0jZW5kaWYKLSAgICB2b2lkIHNldFZpc3VhbEluZm8oWFZpc3VhbEluZm8q
KTsKICAgICBib29sIGlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFJlZlB0cjxTaGFyZWRYMTFSZXNvdXJjZXM+IG1fc2hhcmVkUmVzb3VyY2VzOwot
ICAgIFhWaXN1YWxJbmZvKiBtX2NvbmZpZ1Zpc3VhbEluZm87CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="202710"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184862</attachid>
            <date>2013-01-26 07:03:20 -0800</date>
            <delta_ts>2013-01-28 15:10:52 -0800</delta_ts>
            <desc>patchv5</desc>
            <filename>x11changes.patch</filename>
            <type>text/plain</type>
            <size>20051</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDcwNmMwYjcuLjI1Y2YyYzUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEz
LTAxLTIwIEtvbmRhcGFsbHkgS2FseWFuIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VmbF1bV2ViR0xdIEFkZCBiZXR0ZXIgc3VwcG9ydCB0byB0cmFjayBhbmQgZnJl
ZSBYUmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgbGVhayBNZW1vcnkgZHVyaW5nIGNvbmZpZyBzZWxlY3Rpb24gYXMgd2UgZG9udCBm
cmVlIHRlbXAKKyAgICAgICAgYWxsb2NhdGVkIHZpc3VhbHMsIGNvbmZpZyBldGMuIFRoaXMgcGF0
Y2ggZW5zdXJlcyB0aGF0IHdlIGRvbnQgbGVhayBhbnkKKyAgICAgICAgbWVtb3J5LgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgV2ViR0wgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpHTFhDb25maWdTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6dmlzdWFsSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6cEJ1ZmZlckNvbnRleHRDb25m
aWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnN1cmZhY2VDb250ZXh0
Q29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpjcmVhdGVTdXJm
YWNlQ29uZmlnKToKKyAgICAgICAgKEdMWENvbmZpZ1NlbGVjdG9yKToKKyAgICAgICAgUmVtb3Zl
ZCBYVmlzdWFsSW5mbyBhcyBtZW1iZXIgdmFyaWFibGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9TY29wZWRQdHJY
MTEuaDogQWRkZWQuCisgICAgICAgIChTY29wZWRQdHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVkUHRyWDExOjpTY29wZWRQdHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUHRy
WDExOjp+U2NvcGVkUHRyWDExKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFB0clgxMTo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFB0clgxMTo6b3BlcmF0b3IgVCopOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUHRyWDExOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjb3BlZFB0clgxMTo6Z2V0KToKKyAgICAgICAgQ2FsbHMgWEZyZWUgb24gcG9pbnRl
ciB0byBtZW1vcnkgYWxsb2NhdGVkIGJ5IFggd2hlbiB0aGUgY2xhc3MgZ29lcyBvdXQgb2Ygc2Nv
cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93
UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6WDEx
T2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6
flgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaDoK
KyAgICAgICAgKFgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIFJlbW92ZWQgdW51c2VkIGNv
ZGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4KKwogMjAxMy0wMS0yNiAgSnVzdGluIFNjaHVoICA8anNj
aHVoQGNocm9taXVtLm9yZz4KCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcAppbmRleCBiNTI0YWI1Li4yNmQ1
NmE1IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFN1cmZhY2UuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKQEAgLTU3LDEyICs1Nyw3IEBAIEVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFtX25hdGl2ZVJlc291cmNlLT5zZXRWaXN1YWxJZCh2aXN1
YWxJZCkpIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV9uYXRpdmVSZXNvdXJjZS0+Y3JlYXRlT2Zmc2NyZWVuV2luZG93KCZtX2J1ZmZlckhhbmRs
ZSk7CisgICAgbV9uYXRpdmVSZXNvdXJjZS0+Y3JlYXRlT2ZmU2NyZWVuV2luZG93KCZtX2J1ZmZl
ckhhbmRsZSwgdmlzdWFsSWQpOwogCiAgICAgaWYgKCFtX2J1ZmZlckhhbmRsZSkgewogICAgICAg
ICBkZXN0cm95KCk7CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKaW5kZXggN2UwY2ZjMC4u
OTYxOGU1ZSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaApAQCAtMzksNyArMzksNiBA
QCBwdWJsaWM6CiAgICAgR0xYQ29uZmlnU2VsZWN0b3IoRGlzcGxheSogeERpc3BsYXksIGJvb2wg
c3VwcG9ydHNYUmVuZGVyRXh0ZW5zaW9uKQogICAgICAgICA6IG1fcGJ1ZmZlckZCQ29uZmlnKDAp
CiAgICAgICAgICwgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKDApCi0gICAgICAgICwgbV92aXN1
YWxJbmZvKDApCiAgICAgICAgICwgbV9zaGFyZWREaXNwbGF5KHhEaXNwbGF5KQogICAgICAgICAs
IG1fc3VwcG9ydHNYUmVuZGVyRXh0ZW5zaW9uKHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAg
ICB7CkBAIC00OSw5ICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFhWaXN1
YWxJbmZvKiB2aXN1YWxJbmZvKCkgY29uc3QKKyAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbygp
CiAgICAgewotICAgICAgICByZXR1cm4gbV92aXN1YWxJbmZvOworICAgICAgICBpZiAoIXN1cmZh
Y2VDb250ZXh0Q29uZmlnKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1
cm4gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgbV9zdXJmYWNlQ29u
dGV4dEZCQ29uZmlnKTsKICAgICB9CiAKICAgICBHTFhGQkNvbmZpZyBwQnVmZmVyQ29udGV4dENv
bmZpZygpCkBAIC02OSwxMCArNzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9OwogCiAgICAg
ICAgICAgICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAgICAgIEdMWEZCQ29uZmln
KiB0ZW1wID0gZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVu
KG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKTsKKyAg
ICAgICAgICAgIFNjb3BlZFB0clgxMTxHTFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZp
ZyhtX3NoYXJlZERpc3BsYXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmli
dXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKICAgICAgICAgICAgIGlmIChudW1BdmFpbGFi
bGVDb25maWdzKQogICAgICAgICAgICAgICAgIG1fcGJ1ZmZlckZCQ29uZmlnID0gdGVtcFswXTsK
LSAgICAgICAgICAgIFhGcmVlKHRlbXApOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1f
cGJ1ZmZlckZCQ29uZmlnOwpAQCAtODAsMjMgKzgxLDggQEAgcHVibGljOgogCiAgICAgR0xYRkJD
b25maWcgc3VyZmFjZUNvbnRleHRDb25maWcoKQogICAgIHsKLSAgICAgICAgaWYgKCFtX3N1cmZh
Y2VDb250ZXh0RkJDb25maWcpIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbnQgYXR0cmlidXRlc1td
ID0gewotICAgICAgICAgICAgICAgIEdMWF9MRVZFTCwgMCwKLSAgICAgICAgICAgICAgICBHTFhf
RFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19CSVQsCi0gICAgICAgICAgICAgICAgR0xYX1JFTkRF
Ul9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKLSAgICAgICAgICAgICAgICBHTFhfUkVEX1NJWkUsICAg
ICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfR1JFRU5fU0laRSwgICAgMSwKLSAgICAgICAgICAg
ICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfQUxQSEFfU0la
RSwgICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwKLSAgICAgICAg
ICAgICAgICBHTFhfWF9WSVNVQUxfVFlQRSwgR0xYX1RSVUVfQ09MT1IsCi0gICAgICAgICAgICAg
ICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCi0gICAgICAgICAgICAgICAgTm9uZQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRl
Q29uZmlnKGF0dHJpYnV0ZXMpOwotICAgICAgICB9CisgICAgICAgIGlmICghbV9zdXJmYWNlQ29u
dGV4dEZCQ29uZmlnKQorICAgICAgICAgICAgY3JlYXRlU3VyZmFjZUNvbmZpZygpOwogCiAgICAg
ICAgIHJldHVybiBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7CiAgICAgfQpAQCAtMTA4LDU2ICs5
NCw1NSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdMWEZCQ29uZmlnIGNyZWF0
ZUNvbmZpZyhjb25zdCBpbnQgYXR0cmlidXRlc1tdKQorICAgIHZvaWQgY3JlYXRlU3VyZmFjZUNv
bmZpZygpCiAgICAgewotICAgICAgICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAg
bV92aXN1YWxJbmZvID0gMDsKLSAgICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VG
QkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwg
YXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpOworICAgICAgICBzdGF0aWMgaW50IGF0
dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIEdMWF9MRVZFTCwgMCwKKyAgICAgICAgICAgIEdM
WF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKKyAgICAgICAgICAgIEdMWF9SRU5ERVJf
VFlQRSwgICBHTFhfUkdCQV9CSVQsCisgICAgICAgICAgICBHTFhfUkVEX1NJWkUsICAgICAgMSwK
KyAgICAgICAgICAgIEdMWF9HUkVFTl9TSVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX0JMVUVf
U0laRSwgICAgIDEsCisgICAgICAgICAgICBHTFhfQUxQSEFfU0laRSwgICAgMSwKKyAgICAgICAg
ICAgIEdMWF9ERVBUSF9TSVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUs
IEdMWF9UUlVFX0NPTE9SLAorICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCisg
ICAgICAgICAgICBOb25lCisgICAgICAgIH07CiAKLSAgICAgICAgaWYgKCFudW1BdmFpbGFibGVD
b25maWdzKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGludCBudW1BdmFpbGFibGVD
b25maWdzOworICAgICAgICBTY29wZWRQdHJYMTE8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3Nl
RkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSks
IGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAKLSAgICAgICAgR0xYRkJDb25m
aWcgc2VsZWN0ZWRDb25maWcgPSAwOwotICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAg
ICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncykgeworICAgICAgICAgICAgbV9zdXJmYWNlQ29u
dGV4dEZCQ29uZmlnID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAg
ICAgIFNjb3BlZFB0clgxMTxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFsSW5mbzsKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmIChtX3Zpc3VhbEluZm8pCi0gICAgICAgICAgICAgICAgWEZyZWUobV92aXN1YWxJbmZv
KTsKLQotICAgICAgICAgICAgbV92aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmln
KG1fc2hhcmVkRGlzcGxheSwgdGVtcFtpXSk7Ci0gICAgICAgICAgICBpZiAoIW1fdmlzdWFsSW5m
bykKKyAgICAgICAgICAgIHNjb3BlZFZpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25m
aWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wW2ldKTsKKyAgICAgICAgICAgIGlmICghc2NvcGVkVmlz
dWFsSW5mby5nZXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKICAgICAgICAgICAgIGlmIChtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikg
ewotICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmlu
ZFZpc3VhbEZvcm1hdChtX3NoYXJlZERpc3BsYXksIG1fdmlzdWFsSW5mby0+dmlzdWFsKTsKKyAg
ICAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9zaGFyZWREaXNwbGF5LCBzY29wZWRWaXN1YWxJbmZvLT52aXN1YWwpOwogICAg
ICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkg
ewotICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbaV07Ci0gICAgICAg
ICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdXJmYWNl
Q29udGV4dEZCQ29uZmlnID0gdGVtcFtpXTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3Zpc3VhbEluZm8tPmRl
cHRoID09IDMyKSB7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKG1fdmlzdWFsSW5mby0+ZGVwdGgg
PT0gMzIpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29uZmlnID0gdGVtcFtp
XTsKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnICYmIHNjb3BlZFZpc3Vh
bEluZm8tPmRlcHRoID09IDMyKQorICAgICAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNv
bmZpZyA9IHRlbXBbaV07CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEaWQgbm90IGZpbmQgYW55
IHZpc3VhbCBzdXBwb3J0aW5nIGFscGhhLCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBjb25m
aWcuCi0gICAgICAgIGlmICghZm91bmQpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkQ29uZmlnID0g
dGVtcFswXTsKLSAgICAgICAgICAgIG1fdmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNv
bmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBbMF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgWEZy
ZWUodGVtcCk7Ci0KLSAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ29uZmlnOworICAgICAgICBpZiAo
IW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykKKyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRG
QkNvbmZpZyA9IHRlbXBbMF07CiAgICAgfQogCiAgICAgR0xYRkJDb25maWcgbV9wYnVmZmVyRkJD
b25maWc7CiAgICAgR0xYRkJDb25maWcgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnOwotICAgIFhW
aXN1YWxJbmZvKiBtX3Zpc3VhbEluZm87CiAgICAgRGlzcGxheSogbV9zaGFyZWREaXNwbGF5Owog
ICAgIGJvb2wgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb247CiB9OwpkaWZmIC0tZ2l0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5j
cHAKaW5kZXggMmQ2YzRmNC4uZGM0YTRiOSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCkBAIC00NSwx
NCArNDUsMTQgQEAgR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFjZSgpCiAg
ICAgfQogCiAgICAgbV9jb25maWdTZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBHTFhDb25maWdTZWxl
Y3RvcihtX3NoYXJlZERpc3BsYXksIG1fbmF0aXZlUmVzb3VyY2UtPmlzWFJlbmRlckV4dGVuc2lv
blN1cHBvcnRlZCgpKSk7CisgICAgU2NvcGVkUHRyWDExPFhWaXN1YWxJbmZvPiB2aXNJbmZvKG1f
Y29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8oKSk7CiAKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24o
KSkgeworICAgIGlmICghdmlzSW5mby5nZXQoKSkgewogICAgICAgICBkZXN0cm95KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX25hdGl2ZVJlc291cmNlLT5zZXRWaXN1YWxJbmZv
KG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8oKSk7Ci0gICAgbV9uYXRpdmVSZXNvdXJjZS0+
Y3JlYXRlT2Zmc2NyZWVuV2luZG93KCZtX2J1ZmZlckhhbmRsZSk7CisgICAgbV9uYXRpdmVSZXNv
dXJjZS0+Y3JlYXRlT2ZmU2NyZWVuV2luZG93KCZtX2J1ZmZlckhhbmRsZSwgKnZpc0luZm8uZ2V0
KCkpOwogCiAgICAgaWYgKCFtX2J1ZmZlckhhbmRsZSkgewogICAgICAgICBkZXN0cm95KCk7CmRp
ZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1Nj
b3BlZFB0clgxMS5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9TY29wZWRQdHJYMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWMy
NmVlCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9TY29wZWRQdHJYMTEuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNjb3BlZFB0clgxMV9oCisjZGVmaW5lIFNjb3BlZFB0clgxMV9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBTY29w
ZWRQdHJYMTEgeworCisgICAgU2NvcGVkUHRyWDExKCkgOiBtX3hSZXNvdXJjZSgwKSB7IH0KKyAg
ICBTY29wZWRQdHJYMTEoVCogeFJlc291cmNlKSA6IG1feFJlc291cmNlKHhSZXNvdXJjZSkgeyB9
CisKKyAgICB+U2NvcGVkUHRyWDExKCkKKyAgICB7CisgICAgICAgIGlmIChtX3hSZXNvdXJjZSkK
KyAgICAgICAgICAgIFhGcmVlKG1feFJlc291cmNlKTsKKyAgICB9CisKKyAgICBTY29wZWRQdHJY
MTEmIG9wZXJhdG9yPShUKiB4UmVzb3VyY2UpCisgICAgeworICAgICAgICBpZiAobV94UmVzb3Vy
Y2UpCisgICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJjZSk7CisKKyAgICAgICAgbV94UmVzb3Vy
Y2UgPSB4UmVzb3VyY2U7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBvcGVy
YXRvciBUKigpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisgICAgVCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisgICAgVCogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV94UmVzb3VyY2U7IH0KKworcHJpdmF0ZToKKyAgICBTY29wZWRQdHJYMTEoY29uc3Qg
U2NvcGVkUHRyWDExJik7CisgICAgU2NvcGVkUHRyWDExJiBvcGVyYXRvcj0oY29uc3QgU2NvcGVk
UHRyWDExJik7CisgICAgc3RhdGljIHZvaWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90KTsKKyAgICBz
dGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQqKTsKKyAgICBUKiBtX3hSZXNvdXJjZTsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKaW5k
ZXggNWE1N2E4MS4uMjJjOTE2ZiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNw
cApAQCAtMzQsMTcgKzM0LDEyIEBAIFNoYXJlZFgxMVJlc291cmNlcyogU2hhcmVkWDExUmVzb3Vy
Y2VzOjptX3N0YXRpY1NoYXJlZFJlc291cmNlID0gMDsKIAogWDExT2ZmU2NyZWVuV2luZG93OjpY
MTFPZmZTY3JlZW5XaW5kb3coKQogICAgIDogbV9zaGFyZWRSZXNvdXJjZXMoMCkKLSAgICAsIG1f
Y29uZmlnVmlzdWFsSW5mbygwKQogewogICAgIG1fc2hhcmVkUmVzb3VyY2VzID0gU2hhcmVkWDEx
UmVzb3VyY2VzOjpjcmVhdGUoKTsKIH0KIAogWDExT2ZmU2NyZWVuV2luZG93Ojp+WDExT2ZmU2Ny
ZWVuV2luZG93KCkKIHsKLSAgICBpZiAobV9jb25maWdWaXN1YWxJbmZvKSB7Ci0gICAgICAgIFhG
cmVlKG1fY29uZmlnVmlzdWFsSW5mbyk7Ci0gICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IDA7
Ci0gICAgfQogfQogCiB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0
IEludFJlY3QmIG5ld1JlY3QsIGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQpAQCAtNTMsNyArNDgs
OCBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0IEludFJlY3Qm
IG5ld1JlY3QsIGNvbnN0IHVpbnQzMl90IHdpbgogICAgIFhGbHVzaChtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpKTsKIH0KIAotdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCisjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCit2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQz
Ml90KiBoYW5kbGVJZCwgY29uc3QgWFZpc3VhbEluZm8mIHZpc0luZm8sIGNvbnN0IEludFNpemUm
IHNpemUpCiB7CiAgICAgaWYgKCFtX3NoYXJlZFJlc291cmNlcykKICAgICAgICAgcmV0dXJuOwpA
QCAtNjIsNyArNTgsNyBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVu
V2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKICAgICBpZiAoIWRpc3BsYXkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghbV9jb25maWdWaXN1YWxJbmZvKSB7CisgICAgaWYgKCF2aXNJbmZv
LnZpc3VhbCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmaW5kIHZhbGlkIFhWaXN1
YWwuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MSwxMyArNjcsMTQgQEAgdm9pZCBY
MTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxl
SWQpCiAgICAgaWYgKCF4V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvcm1hcCBj
bWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXksIHhXaW5kb3csIG1fY29uZmlnVmlzdWFsSW5m
by0+dmlzdWFsLCBBbGxvY05vbmUpOworICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3Jt
YXAoZGlzcGxheSwgeFdpbmRvdywgdmlzSW5mby52aXN1YWwsIEFsbG9jTm9uZSk7CiAgICAgWFNl
dFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlOwogICAgIGF0dHJpYnV0ZS5iYWNrZ3JvdW5kX3Bp
eGVsID0gV2hpdGVQaXhlbChkaXNwbGF5LCAwKTsKICAgICBhdHRyaWJ1dGUuYm9yZGVyX3BpeGVs
ID0gQmxhY2tQaXhlbChkaXNwbGF5LCAwKTsKICAgICBhdHRyaWJ1dGUuY29sb3JtYXAgPSBjbWFw
OworICAgIGF0dHJpYnV0ZS5ldmVudF9tYXNrID0gUmVzaXplUmVkaXJlY3RNYXNrOwogICAgIHVp
bnQzMl90IHRlbXBIYW5kbGVJZDsKLSAgICB0ZW1wSGFuZGxlSWQgPSBYQ3JlYXRlV2luZG93KGRp
c3BsYXksIHhXaW5kb3csIDAsIDAsIDEsIDEsIDAsIG1fY29uZmlnVmlzdWFsSW5mby0+ZGVwdGgs
IElucHV0T3V0cHV0LCBtX2NvbmZpZ1Zpc3VhbEluZm8tPnZpc3VhbCwgQ1dCYWNrUGl4ZWwgfCBD
V0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwgJmF0dHJpYnV0ZSk7CisgICAgdGVtcEhhbmRsZUlk
ID0gWENyZWF0ZVdpbmRvdyhkaXNwbGF5LCB4V2luZG93LCAwLCAwLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIDAsIHZpc0luZm8uZGVwdGgsIElucHV0T3V0cHV0LCB2aXNJbmZvLnZpc3Vh
bCwgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwgJmF0dHJpYnV0ZSk7
CiAKICAgICBpZiAoIXRlbXBIYW5kbGVJZCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgb2Zmc2NyZWVuIHdpbmRvdy4iKTsKQEAgLTg2LDg3ICs4Myw2MyBAQCB2b2lkIFgx
MU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJ
ZCkKIAogICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwKGRpc3BsYXksIHRlbXBIYW5kbGVJ
ZCwgMCk7CiAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJ
ZCwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworICAgIFhNYXBXaW5kb3coZGlzcGxheSwgdGVt
cEhhbmRsZUlkKTsKICAgICAqaGFuZGxlSWQgPSB0ZW1wSGFuZGxlSWQ7Ci0KLSAgICBpZiAobV9z
aGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKQotICAgICAgICBY
TWFwV2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCk7Ci0KLX0KLQotdm9pZCBYMTFPZmZTY3Jl
ZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3coY29uc3QgdWludDMyX3Qgd2luZG93SWQpCi17Ci0gICAg
aWYgKCF3aW5kb3dJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRGlzcGxheSogZGlzcGxheSA9
IG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCk7Ci0gICAgaWYgKCFkaXNwbGF5KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCk7Ci19
Ci0KLURpc3BsYXkqIFgxMU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCk7CiB9CiAK
ICNpZiBVU0UoRUdMKQotYm9vbCBYMTFPZmZTY3JlZW5XaW5kb3c6OnNldFZpc3VhbElkKGNvbnN0
IEVHTGludCBpZCkKK3ZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZTY3JlZW5XaW5k
b3codWludDMyX3QqIGhhbmRsZUlkLCBjb25zdCBFR0xpbnQgaWQsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgVmlzdWFsSUQgdmlzdWFsSWQgPSBzdGF0aWNfY2FzdDxWaXN1YWxJRD4oaWQp
OwogCiAgICAgaWYgKCF2aXN1YWxJZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBFR0wgaGFzIHN1Z2dlc3RlZCBhIHZpc3VhbCBpZCwgc28gZ2V0IHRo
ZSByZXN0IG9mIHRoZSB2aXN1YWwgaW5mbyBmb3IgdGhhdCBpZC4KICAgICBYVmlzdWFsSW5mbyB2
aXN1YWxJbmZvVGVtcGxhdGU7CiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNp
emVvZihYVmlzdWFsSW5mbykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZp
c3VhbElkOwotCi0gICAgWFZpc3VhbEluZm8qIGNob3NlblZpc3VhbEluZm87CiAgICAgaW50IG1h
dGNoaW5nQ291bnQgPSAwOwotICAgIGNob3NlblZpc3VhbEluZm8gPSBYR2V0VmlzdWFsSW5mbyht
X3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZv
VGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKLSAgICBpZiAoY2hvc2VuVmlzdWFsSW5mbykgewot
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMt
PmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICBYUmVuZGVyUGlj
dEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFyZWRSZXNvdXJj
ZXMtPngxMURpc3BsYXkoKSwgY2hvc2VuVmlzdWFsSW5mby0+dmlzdWFsKTsKLSAgICAgICAgICAg
IGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkgewotICAgICAgICAg
ICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IGNob3NlblZpc3VhbEluZm87Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotICAg
ICAgICBpZiAoY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSAgICAgICAgICAgIG1f
Y29uZmlnVmlzdWFsSW5mbyA9IGNob3NlblZpc3VhbEluZm87Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KKyAgICBPd25QdHI8WFZpc3VhbEluZm8+IG1hdGNoaW5n
VmlzdWFscyA9IGFkb3B0UHRyKFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFE
aXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291
bnQpKTsKKyAgICBYVmlzdWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOwogCi0gICAgaWYgKCFtX2Nv
bmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAs
IHNpemVvZihYVmlzdWFsSW5mbykpOwotICAgICAgICBYVmlzdWFsSW5mbyogbWF0Y2hpbmdWaXN1
YWxzOwotICAgICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7CisgICAgaWYgKG1hdGNoaW5nVmlz
dWFscykgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaTwgbWF0Y2hpbmdDb3VudDsgaSsrKSB7
CisgICAgICAgICAgICBYVmlzdWFsSW5mbyogdGVtcCA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07CiAK
LSAgICAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLmRlcHRoID0gY2hvc2VuVmlzdWFsSW5mby0+ZGVw
dGg7Ci0gICAgICAgIG1hdGNoaW5nVmlzdWFscyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVz
b3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbERlcHRoTWFzaywgJnZpc3VhbEluZm9UZW1wbGF0
ZSwgJm1hdGNoaW5nQ291bnQpOworICAgICAgICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5p
c1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgIFhSZW5kZXJQ
aWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291
cmNlcy0+eDExRGlzcGxheSgpLCB0ZW1wLT52aXN1YWwpOworICAgICAgICAgICAgICAgIGlmIChm
b3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkKKyAgICAgICAgICAgICAgICAg
ICAgZm91bmRWaXN1YWwgPSB0ZW1wOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYXRj
aGluZ1Zpc3VhbHMpIHsKLSAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGlu
Z1Zpc3VhbHNbMF07Ci0gICAgICAgICAgICBYRnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAoIWZvdW5kVmlzdWFsICYmIHRlbXAt
PmRlcHRoID09IDMyKQorICAgICAgICAgICAgICAgIGZvdW5kVmlzdWFsID0gdGVtcDsKICAgICAg
ICAgfQorCisgICAgICAgIGlmIChmb3VuZFZpc3VhbCkKKyAgICAgICAgICAgIGNyZWF0ZU9mZlNj
cmVlbldpbmRvdyhoYW5kbGVJZCwgKmZvdW5kVmlzdWFsLCBzaXplKTsKICAgICB9Cit9CisjZW5k
aWYKIAotICAgIGlmICghbV9jb25maWdWaXN1YWxJbmZvKQotICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byByZXRyaWV2ZSBYVmlzdWFsIEluZm8uIik7CisjZW5kaWYKIAotICAgIHJldHVybiBm
YWxzZTsKK3ZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KGNvbnN0IHVpbnQz
Ml90IHdpbmRvd0lkKQoreworICAgIGlmICghd2luZG93SWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwor
ICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgWERlc3Ryb3lXaW5kb3co
ZGlzcGxheSwgd2luZG93SWQpOwogfQotI2VuZGlmCiAKLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93
OjpzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZvKiB2aXNJbmZvKQorRGlzcGxheSogWDExT2ZmU2Ny
ZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KCkgY29uc3QKIHsKLSAgICBtX2NvbmZpZ1Zp
c3VhbEluZm8gPSB2aXNJbmZvOworICAgIHJldHVybiBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlz
cGxheSgpOwogfQogCiBib29sIFgxMU9mZlNjcmVlbldpbmRvdzo6aXNYUmVuZGVyRXh0ZW5zaW9u
U3VwcG9ydGVkKCkgY29uc3QKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmggU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oCmluZGV4IGEz
OTg2NWQuLmI2ZTE2ZmMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmgKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaApAQCAtMjks
MTMgKzI5LDIwIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlNjb3BlZFB0clgxMS5oIgogCi0jaW5jbHVkZSA8b3Bl
bmdsL0dMRGVmcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQorCisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+
CisjZW5kaWYKKwogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNs
dWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+CiAjZW5kaWYKQEAgLTE0MywxOSArMTUwLDE5
IEBAIGNsYXNzIFgxMU9mZlNjcmVlbldpbmRvdyB7CiBwdWJsaWM6CiAgICAgWDExT2ZmU2NyZWVu
V2luZG93KCk7CiAgICAgdmlydHVhbCB+WDExT2ZmU2NyZWVuV2luZG93KCk7Ci0gICAgdm9pZCBj
cmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyAgICB2b2lkIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCosIGNvbnN0IFhWaXN1
YWxJbmZvJiwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKKyNpZiBVU0UoRUdMKQor
ICAgIHZvaWQgY3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiwgY29uc3QgRUdMaW50LCBj
b25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOworI2VuZGlmCisjZW5kaWYKICAgICB2b2lk
IGRlc3Ryb3lXaW5kb3coY29uc3QgdWludDMyX3QpOwogICAgIHZvaWQgcmVTaXplV2luZG93KGNv
bnN0IEludFJlY3QmLCBjb25zdCB1aW50MzJfdCk7CiAgICAgRGlzcGxheSogbmF0aXZlU2hhcmVk
RGlzcGxheSgpIGNvbnN0OwotI2lmIFVTRShFR0wpCi0gICAgYm9vbCBzZXRWaXN1YWxJZChjb25z
dCBFR0xpbnQpOwotI2VuZGlmCi0gICAgdm9pZCBzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZvKik7
CiAgICAgYm9vbCBpc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBSZWZQdHI8U2hhcmVkWDExUmVzb3VyY2VzPiBtX3NoYXJlZFJlc291cmNlczsKLSAg
ICBYVmlzdWFsSW5mbyogbV9jb25maWdWaXN1YWxJbmZvOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185079</attachid>
            <date>2013-01-28 15:10:52 -0800</date>
            <delta_ts>2013-01-31 00:04:06 -0800</delta_ts>
            <desc>patchv6</desc>
            <filename>x11reviewchanges.patch</filename>
            <type>text/plain</type>
            <size>19979</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGFkN2Q2OTEuLmYyMjZiZDUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEz
LTAxLTIwIEtvbmRhcGFsbHkgS2FseWFuIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VmbF1bV2ViR0xdIEFkZCBiZXR0ZXIgc3VwcG9ydCB0byB0cmFjayBhbmQgZnJl
ZSBYUmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgbGVhayBNZW1vcnkgZHVyaW5nIGNvbmZpZyBzZWxlY3Rpb24gYXMgd2UgZG9udCBm
cmVlIHRlbXAKKyAgICAgICAgYWxsb2NhdGVkIHZpc3VhbHMsIGNvbmZpZyBldGMuIFRoaXMgcGF0
Y2ggZW5zdXJlcyB0aGF0IHdlIGRvbnQgbGVhayBhbnkKKyAgICAgICAgbWVtb3J5LgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgV2ViR0wgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpHTFhDb25maWdTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6dmlzdWFsSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6cEJ1ZmZlckNvbnRleHRDb25m
aWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OnN1cmZhY2VDb250ZXh0
Q29uZmlnKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpjcmVhdGVTdXJm
YWNlQ29uZmlnKToKKyAgICAgICAgKEdMWENvbmZpZ1NlbGVjdG9yKToKKyAgICAgICAgUmVtb3Zl
ZCBYVmlzdWFsSW5mbyBhcyBtZW1iZXIgdmFyaWFibGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Pd25QdHJYMTEu
aDogQWRkZWQuCisgICAgICAgIChPd25QdHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRy
WDExOjpPd25QdHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjp+T3duUHRyWDEx
KToKKyAgICAgICAgKFdlYkNvcmU6Ok93blB0clgxMTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YkNvcmU6Ok93blB0clgxMTo6b3BlcmF0b3IgVCopOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRy
WDExOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdlYkNvcmU6Ok93blB0clgxMTo6Z2V0KToKKyAg
ICAgICAgQ2FsbHMgWEZyZWUgb24gcG9pbnRlciB0byBtZW1vcnkgYWxsb2NhdGVkIGJ5IFggd2hl
biB0aGUgY2xhc3MgZ29lcyBvdXQgb2Ygc2NvcGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6WDExT2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6flgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRl
T2ZmU2NyZWVuV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldpbmRvdzo6
ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6Om5h
dGl2ZVNoYXJlZERpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaDoKKyAgICAgICAgKFgxMU9mZlNjcmVlbldpbmRvdyk6
CisgICAgICAgIFJlbW92ZWQgdW51c2VkIGNvZGUuIEZpeGVkIG1lbW9yeSBsZWFrcy4KKwogMjAx
My0wMS0yOCAgVmxhZGlzbGF2IEthem5hY2hlZXYgIDxrYXpuYWNoZWV2QGNocm9taXVtLm9yZz4K
CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWds
L0VHTFN1cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VnbC9FR0xTdXJmYWNlLmNwcAppbmRleCBiNTI0YWI1Li4yNmQ1NmE1IDEwMDY0NAotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3Bw
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3Vy
ZmFjZS5jcHAKQEAgLTU3LDEyICs1Nyw3IEBAIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVH
TFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFtX25hdGl2ZVJlc291cmNlLT5zZXRWaXN1YWxJZCh2aXN1YWxJZCkpIHsKLSAgICAgICAg
ZGVzdHJveSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9uYXRpdmVSZXNvdXJj
ZS0+Y3JlYXRlT2Zmc2NyZWVuV2luZG93KCZtX2J1ZmZlckhhbmRsZSk7CisgICAgbV9uYXRpdmVS
ZXNvdXJjZS0+Y3JlYXRlT2ZmU2NyZWVuV2luZG93KCZtX2J1ZmZlckhhbmRsZSwgdmlzdWFsSWQp
OwogCiAgICAgaWYgKCFtX2J1ZmZlckhhbmRsZSkgewogICAgICAgICBkZXN0cm95KCk7CmRpZmYg
LS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENv
bmZpZ1NlbGVjdG9yLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKaW5kZXggN2UwY2ZjMC4uNmU1NTZiZiAxMDA2NDQKLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvR0xYQ29uZmlnU2VsZWN0b3IuaApAQCAtMzksNyArMzksNiBAQCBwdWJsaWM6CiAgICAgR0xY
Q29uZmlnU2VsZWN0b3IoRGlzcGxheSogeERpc3BsYXksIGJvb2wgc3VwcG9ydHNYUmVuZGVyRXh0
ZW5zaW9uKQogICAgICAgICA6IG1fcGJ1ZmZlckZCQ29uZmlnKDApCiAgICAgICAgICwgbV9zdXJm
YWNlQ29udGV4dEZCQ29uZmlnKDApCi0gICAgICAgICwgbV92aXN1YWxJbmZvKDApCiAgICAgICAg
ICwgbV9zaGFyZWREaXNwbGF5KHhEaXNwbGF5KQogICAgICAgICAsIG1fc3VwcG9ydHNYUmVuZGVy
RXh0ZW5zaW9uKHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAgICB7CkBAIC00OSw5ICs0OCwx
MiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZv
KCkgY29uc3QKKyAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbygpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV92aXN1YWxJbmZvOworICAgICAgICBpZiAoIXN1cmZhY2VDb250ZXh0Q29uZmlnKCkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gZ2xYR2V0VmlzdWFsRnJv
bUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKTsKICAg
ICB9CiAKICAgICBHTFhGQkNvbmZpZyBwQnVmZmVyQ29udGV4dENvbmZpZygpCkBAIC02OSwxMCAr
NzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpbnQgbnVtQXZh
aWxhYmxlQ29uZmlnczsKLSAgICAgICAgICAgIEdMWEZCQ29uZmlnKiB0ZW1wID0gZ2xYQ2hvb3Nl
RkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSks
IGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKTsKKyAgICAgICAgICAgIE93blB0clgx
MTxHTFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIERl
ZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNv
bmZpZ3MpKTsKICAgICAgICAgICAgIGlmIChudW1BdmFpbGFibGVDb25maWdzKQogICAgICAgICAg
ICAgICAgIG1fcGJ1ZmZlckZCQ29uZmlnID0gdGVtcFswXTsKLSAgICAgICAgICAgIFhGcmVlKHRl
bXApOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1fcGJ1ZmZlckZCQ29uZmlnOwpAQCAt
ODAsMjMgKzgxLDggQEAgcHVibGljOgogCiAgICAgR0xYRkJDb25maWcgc3VyZmFjZUNvbnRleHRD
b25maWcoKQogICAgIHsKLSAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpIHsK
LSAgICAgICAgICAgIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0gewotICAgICAgICAgICAgICAg
IEdMWF9MRVZFTCwgMCwKLSAgICAgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJ
TkRPV19CSVQsCi0gICAgICAgICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJ
VCwKLSAgICAgICAgICAgICAgICBHTFhfUkVEX1NJWkUsICAgICAgMSwKLSAgICAgICAgICAgICAg
ICBHTFhfR1JFRU5fU0laRSwgICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfQkxVRV9TSVpFLCAg
ICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfQUxQSEFfU0laRSwgICAgMSwKLSAgICAgICAgICAg
ICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwKLSAgICAgICAgICAgICAgICBHTFhfWF9WSVNVQUxf
VFlQRSwgR0xYX1RSVUVfQ09MT1IsCi0gICAgICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwg
IFRydWUsCi0gICAgICAgICAgICAgICAgTm9uZQotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gY3JlYXRlQ29uZmlnKGF0dHJpYnV0ZXMpOwot
ICAgICAgICB9CisgICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnKQorICAgICAg
ICAgICAgY3JlYXRlU3VyZmFjZUNvbmZpZygpOwogCiAgICAgICAgIHJldHVybiBtX3N1cmZhY2VD
b250ZXh0RkJDb25maWc7CiAgICAgfQpAQCAtMTA4LDU2ICs5NCw1NSBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIEdMWEZCQ29uZmlnIGNyZWF0ZUNvbmZpZyhjb25zdCBpbnQgYXR0
cmlidXRlc1tdKQorICAgIHZvaWQgY3JlYXRlU3VyZmFjZUNvbmZpZygpCiAgICAgewotICAgICAg
ICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAgbV92aXN1YWxJbmZvID0gMDsKLSAg
ICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3Bs
YXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWls
YWJsZUNvbmZpZ3MpOworICAgICAgICBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAg
ICAgICAgIEdMWF9MRVZFTCwgMCwKKyAgICAgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhf
V0lORE9XX0JJVCwKKyAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwgICBHTFhfUkdCQV9CSVQs
CisgICAgICAgICAgICBHTFhfUkVEX1NJWkUsICAgICAgMSwKKyAgICAgICAgICAgIEdMWF9HUkVF
Tl9TSVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEsCisgICAgICAg
ICAgICBHTFhfQUxQSEFfU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9ERVBUSF9TSVpFLCAg
ICAxLAorICAgICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUsIEdMWF9UUlVFX0NPTE9SLAorICAg
ICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCisgICAgICAgICAgICBOb25lCisgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzKQotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOworICAgICAgICBPd25Q
dHJYMTE8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcobV9zaGFyZWREaXNwbGF5
LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKLSAgICAgICAgR0xYRkJDb25maWcgc2VsZWN0ZWRDb25maWcgPSAwOwot
ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29u
ZmlncykgeworICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gMDsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIE93blB0clgxMTxYVmlzdWFsSW5m
bz4gc2NvcGVkVmlzdWFsSW5mbzsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdmFp
bGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX3Zpc3VhbEluZm8pCi0gICAg
ICAgICAgICAgICAgWEZyZWUobV92aXN1YWxJbmZvKTsKLQotICAgICAgICAgICAgbV92aXN1YWxJ
bmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgdGVtcFtpXSk7
Ci0gICAgICAgICAgICBpZiAoIW1fdmlzdWFsSW5mbykKKyAgICAgICAgICAgIHNjb3BlZFZpc3Vh
bEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wW2ld
KTsKKyAgICAgICAgICAgIGlmICghc2NvcGVkVmlzdWFsSW5mby5nZXQoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAgICAgICAgIGlm
IChtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIFhSZW5kZXJQ
aWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZERpc3Bs
YXksIG1fdmlzdWFsSW5mby0+dmlzdWFsKTsKKyAgICAgICAgICAgICAgICBYUmVuZGVyUGljdEZv
cm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFyZWREaXNwbGF5LCBz
Y29wZWRWaXN1YWxJbmZvLT52aXN1YWwpOwogICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYg
Zm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkgewotICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RlZENvbmZpZyA9IHRlbXBbaV07Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVtcFtpXTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX3Zpc3VhbEluZm8tPmRlcHRoID09IDMyKSB7Ci0jZWxzZQotICAgICAg
ICAgICAgaWYgKG1fdmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSNlbmRpZgotICAgICAgICAg
ICAgICAgIHNlbGVjdGVkQ29uZmlnID0gdGVtcFtpXTsKLSAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7CiAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghbV9zdXJmYWNl
Q29udGV4dEZCQ29uZmlnICYmIHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IDMyKQorICAgICAg
ICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IHRlbXBbaV07CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBEaWQgbm90IGZpbmQgYW55IHZpc3VhbCBzdXBwb3J0aW5nIGFscGhhLCBz
ZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBjb25maWcuCi0gICAgICAgIGlmICghZm91bmQpIHsK
LSAgICAgICAgICAgIHNlbGVjdGVkQ29uZmlnID0gdGVtcFswXTsKLSAgICAgICAgICAgIG1fdmlz
dWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBb
MF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgWEZyZWUodGVtcCk7Ci0KLSAgICAgICAgcmV0dXJu
IHNlbGVjdGVkQ29uZmlnOworICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykK
KyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IHRlbXBbMF07CiAgICAgfQog
CiAgICAgR0xYRkJDb25maWcgbV9wYnVmZmVyRkJDb25maWc7CiAgICAgR0xYRkJDb25maWcgbV9z
dXJmYWNlQ29udGV4dEZCQ29uZmlnOwotICAgIFhWaXN1YWxJbmZvKiBtX3Zpc3VhbEluZm87CiAg
ICAgRGlzcGxheSogbV9zaGFyZWREaXNwbGF5OwogICAgIGJvb2wgbV9zdXBwb3J0c1hSZW5kZXJF
eHRlbnNpb247CiB9OwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5kZXggMmQ2YzRmNC4uODBmYzI2MiAx
MDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9H
TFhTdXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgR0xYVHJhbnNwb3J0U3Vy
ZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFjZSgpCiAgICAgfQogCiAgICAgbV9jb25maWdTZWxlY3Rv
ciA9IGFkb3B0UHRyKG5ldyBHTFhDb25maWdTZWxlY3RvcihtX3NoYXJlZERpc3BsYXksIG1fbmF0
aXZlUmVzb3VyY2UtPmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKSk7CisgICAgT3duUHRy
WDExPFhWaXN1YWxJbmZvPiB2aXNJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8oKSk7
CiAKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24oKSkgeworICAgIGlmICghdmlzSW5mby5nZXQoKSkg
ewogICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX25h
dGl2ZVJlc291cmNlLT5zZXRWaXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8o
KSk7Ci0gICAgbV9uYXRpdmVSZXNvdXJjZS0+Y3JlYXRlT2Zmc2NyZWVuV2luZG93KCZtX2J1ZmZl
ckhhbmRsZSk7CisgICAgbV9uYXRpdmVSZXNvdXJjZS0+Y3JlYXRlT2ZmU2NyZWVuV2luZG93KCZt
X2J1ZmZlckhhbmRsZSwgKnZpc0luZm8uZ2V0KCkpOwogCiAgICAgaWYgKCFtX2J1ZmZlckhhbmRs
ZSkgewogICAgICAgICBkZXN0cm95KCk7CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0clgxMS5oIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Pd25QdHJYMTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iODc3NjEwCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Pd25QdHJYMTEuaApAQCAtMCwwICsxLDY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE93blB0clgxMV9oCisjZGVmaW5lIE93
blB0clgxMV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBPd25QdHJYMTEgeworCisgICAgT3duUHRyWDExKCkgOiBtX3hSZXNvdXJjZSgwKSB7
IH0KKyAgICBPd25QdHJYMTEoVCogeFJlc291cmNlKSA6IG1feFJlc291cmNlKHhSZXNvdXJjZSkg
eyB9CisKKyAgICB+T3duUHRyWDExKCkKKyAgICB7CisgICAgICAgIGlmIChtX3hSZXNvdXJjZSkK
KyAgICAgICAgICAgIFhGcmVlKG1feFJlc291cmNlKTsKKyAgICB9CisKKyAgICBPd25QdHJYMTEm
IG9wZXJhdG9yPShUKiB4UmVzb3VyY2UpCisgICAgeworICAgICAgICBpZiAobV94UmVzb3VyY2Up
CisgICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJjZSk7CisKKyAgICAgICAgbV94UmVzb3VyY2Ug
PSB4UmVzb3VyY2U7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBvcGVyYXRv
ciBUKigpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisgICAgVCogb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV94UmVzb3VyY2U7IH0KKworcHJpdmF0ZToKKyAgICBPd25QdHJYMTEoY29uc3QgT3duUHRy
WDExJik7CisgICAgT3duUHRyWDExJiBvcGVyYXRvcj0oY29uc3QgT3duUHRyWDExJik7CisgICAg
c3RhdGljIHZvaWQqIG9wZXJhdG9yIG5ldyAoc2l6ZV90KTsKKyAgICBzdGF0aWMgdm9pZCBvcGVy
YXRvciBkZWxldGUgKHZvaWQqKTsKKyAgICBUKiBtX3hSZXNvdXJjZTsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKaW5kZXggNWE1N2E4MS4uYjRi
N2M4ZCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcApAQCAtMzQsMTcgKzM0
LDEyIEBAIFNoYXJlZFgxMVJlc291cmNlcyogU2hhcmVkWDExUmVzb3VyY2VzOjptX3N0YXRpY1No
YXJlZFJlc291cmNlID0gMDsKIAogWDExT2ZmU2NyZWVuV2luZG93OjpYMTFPZmZTY3JlZW5XaW5k
b3coKQogICAgIDogbV9zaGFyZWRSZXNvdXJjZXMoMCkKLSAgICAsIG1fY29uZmlnVmlzdWFsSW5m
bygwKQogewogICAgIG1fc2hhcmVkUmVzb3VyY2VzID0gU2hhcmVkWDExUmVzb3VyY2VzOjpjcmVh
dGUoKTsKIH0KIAogWDExT2ZmU2NyZWVuV2luZG93Ojp+WDExT2ZmU2NyZWVuV2luZG93KCkKIHsK
LSAgICBpZiAobV9jb25maWdWaXN1YWxJbmZvKSB7Ci0gICAgICAgIFhGcmVlKG1fY29uZmlnVmlz
dWFsSW5mbyk7Ci0gICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IDA7Ci0gICAgfQogfQogCiB2
b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0IEludFJlY3QmIG5ld1Jl
Y3QsIGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQpAQCAtNTMsNyArNDgsOCBAQCB2b2lkIFgxMU9m
ZlNjcmVlbldpbmRvdzo6cmVTaXplV2luZG93KGNvbnN0IEludFJlY3QmIG5ld1JlY3QsIGNvbnN0
IHVpbnQzMl90IHdpbgogICAgIFhGbHVzaChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgp
KTsKIH0KIAotdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1
aW50MzJfdCogaGFuZGxlSWQpCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIFgxMU9m
ZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCwg
Y29uc3QgWFZpc3VhbEluZm8mIHZpc0luZm8sIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAg
aWYgKCFtX3NoYXJlZFJlc291cmNlcykKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsNyArNTgsNyBA
QCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90
KiBoYW5kbGVJZCkKICAgICBpZiAoIWRpc3BsYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9jb25maWdWaXN1YWxJbmZvKSB7CisgICAgaWYgKCF2aXNJbmZvLnZpc3VhbCkgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmaW5kIHZhbGlkIFhWaXN1YWwuIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC03MSwxMyArNjcsMTQgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5k
b3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCiAgICAgaWYgKCF4
V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNv
bG9ybWFwKGRpc3BsYXksIHhXaW5kb3csIG1fY29uZmlnVmlzdWFsSW5mby0+dmlzdWFsLCBBbGxv
Y05vbmUpOworICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgeFdp
bmRvdywgdmlzSW5mby52aXN1YWwsIEFsbG9jTm9uZSk7CiAgICAgWFNldFdpbmRvd0F0dHJpYnV0
ZXMgYXR0cmlidXRlOwogICAgIGF0dHJpYnV0ZS5iYWNrZ3JvdW5kX3BpeGVsID0gV2hpdGVQaXhl
bChkaXNwbGF5LCAwKTsKICAgICBhdHRyaWJ1dGUuYm9yZGVyX3BpeGVsID0gQmxhY2tQaXhlbChk
aXNwbGF5LCAwKTsKICAgICBhdHRyaWJ1dGUuY29sb3JtYXAgPSBjbWFwOworICAgIGF0dHJpYnV0
ZS5ldmVudF9tYXNrID0gUmVzaXplUmVkaXJlY3RNYXNrOwogICAgIHVpbnQzMl90IHRlbXBIYW5k
bGVJZDsKLSAgICB0ZW1wSGFuZGxlSWQgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksIHhXaW5kb3cs
IDAsIDAsIDEsIDEsIDAsIG1fY29uZmlnVmlzdWFsSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCBt
X2NvbmZpZ1Zpc3VhbEluZm8tPnZpc3VhbCwgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwg
Q1dDb2xvcm1hcCwgJmF0dHJpYnV0ZSk7CisgICAgdGVtcEhhbmRsZUlkID0gWENyZWF0ZVdpbmRv
dyhkaXNwbGF5LCB4V2luZG93LCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAs
IHZpc0luZm8uZGVwdGgsIElucHV0T3V0cHV0LCB2aXNJbmZvLnZpc3VhbCwgQ1dCYWNrUGl4ZWwg
fCBDV0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwgJmF0dHJpYnV0ZSk7CiAKICAgICBpZiAoIXRl
bXBIYW5kbGVJZCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgb2Zmc2Ny
ZWVuIHdpbmRvdy4iKTsKQEAgLTg2LDg3ICs4Myw2MyBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRv
dzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKIAogICAgIFhTZXRX
aW5kb3dCYWNrZ3JvdW5kUGl4bWFwKGRpc3BsYXksIHRlbXBIYW5kbGVJZCwgMCk7CiAgICAgWENv
bXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCwgQ29tcG9zaXRlUmVk
aXJlY3RNYW51YWwpOworICAgIFhNYXBXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlkKTsKICAg
ICAqaGFuZGxlSWQgPSB0ZW1wSGFuZGxlSWQ7Ci0KLSAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMt
PmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKQotICAgICAgICBYTWFwV2luZG93KGRpc3Bs
YXksIHRlbXBIYW5kbGVJZCk7Ci0KLX0KLQotdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ry
b3lXaW5kb3coY29uc3QgdWludDMyX3Qgd2luZG93SWQpCi17Ci0gICAgaWYgKCF3aW5kb3dJZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRGlzcGxheSogZGlzcGxheSA9IG1fc2hhcmVkUmVzb3Vy
Y2VzLT54MTFEaXNwbGF5KCk7Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCk7Ci19Ci0KLURpc3BsYXkqIFgx
MU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCk7CiB9CiAKICNpZiBVU0UoRUdMKQot
Ym9vbCBYMTFPZmZTY3JlZW5XaW5kb3c6OnNldFZpc3VhbElkKGNvbnN0IEVHTGludCBpZCkKK3Zv
aWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqIGhh
bmRsZUlkLCBjb25zdCBFR0xpbnQgaWQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgVmlz
dWFsSUQgdmlzdWFsSWQgPSBzdGF0aWNfY2FzdDxWaXN1YWxJRD4oaWQpOwogCiAgICAgaWYgKCF2
aXN1YWxJZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CiAKICAgICAv
LyBFR0wgaGFzIHN1Z2dlc3RlZCBhIHZpc3VhbCBpZCwgc28gZ2V0IHRoZSByZXN0IG9mIHRoZSB2
aXN1YWwgaW5mbyBmb3IgdGhhdCBpZC4KICAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvVGVtcGxh
dGU7CiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5m
bykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZpc3VhbElkOwotCi0gICAg
WFZpc3VhbEluZm8qIGNob3NlblZpc3VhbEluZm87CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAw
OwotICAgIGNob3NlblZpc3VhbEluZm8gPSBYR2V0VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRj
aGluZ0NvdW50KTsKLSAgICBpZiAoY2hvc2VuVmlzdWFsSW5mbykgewotI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQotICAgICAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVu
c2lvblN1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0
ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KSwgY2hvc2VuVmlzdWFsSW5mby0+dmlzdWFsKTsKLSAgICAgICAgICAgIGlmIChmb3JtYXQgJiYg
Zm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkgewotICAgICAgICAgICAgICAgIG1fY29uZmln
VmlzdWFsSW5mbyA9IGNob3NlblZpc3VhbEluZm87Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoY2hvc2Vu
VmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5m
byA9IGNob3NlblZpc3VhbEluZm87Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgIH0KKyAgICBPd25QdHJYMTE8WFZpc3VhbEluZm8+IG1hdGNoaW5nVmlzdWFscyA9IGFk
b3B0UHRyKFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZp
c3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBY
VmlzdWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbElu
Zm8pIHsKLSAgICAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlz
dWFsSW5mbykpOwotICAgICAgICBYVmlzdWFsSW5mbyogbWF0Y2hpbmdWaXN1YWxzOwotICAgICAg
ICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7CisgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgeworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaTwgbWF0Y2hpbmdDb3VudDsgaSsrKSB7CisgICAgICAgICAg
ICBYVmlzdWFsSW5mbyogdGVtcCA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07CiAKLSAgICAgICAgdmlz
dWFsSW5mb1RlbXBsYXRlLmRlcHRoID0gY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGg7Ci0gICAgICAg
IG1hdGNoaW5nVmlzdWFscyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFE
aXNwbGF5KCksIFZpc3VhbERlcHRoTWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5n
Q291bnQpOworICAgICAgICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRl
bnNpb25TdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBm
b3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlz
cGxheSgpLCB0ZW1wLT52aXN1YWwpOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9y
bWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkKKyAgICAgICAgICAgICAgICAgICAgZm91bmRWaXN1
YWwgPSB0ZW1wOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMp
IHsKLSAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07
Ci0gICAgICAgICAgICBYRnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICBpZiAoIWZvdW5kVmlzdWFsICYmIHRlbXAtPmRlcHRoID09IDMy
KQorICAgICAgICAgICAgICAgIGZvdW5kVmlzdWFsID0gdGVtcDsKICAgICAgICAgfQorCisgICAg
ICAgIGlmIChmb3VuZFZpc3VhbCkKKyAgICAgICAgICAgIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyho
YW5kbGVJZCwgKmZvdW5kVmlzdWFsLCBzaXplKTsKICAgICB9Cit9CisjZW5kaWYKIAotICAgIGlm
ICghbV9jb25maWdWaXN1YWxJbmZvKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRy
aWV2ZSBYVmlzdWFsIEluZm8uIik7CisjZW5kaWYKIAotICAgIHJldHVybiBmYWxzZTsKK3ZvaWQg
WDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lk
KQoreworICAgIGlmICghd2luZG93SWQpCisgICAgICAgIHJldHVybjsKKworICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOworICAgIGlmICghZGlz
cGxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2lu
ZG93SWQpOwogfQotI2VuZGlmCiAKLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJ
bmZvKFhWaXN1YWxJbmZvKiB2aXNJbmZvKQorRGlzcGxheSogWDExT2ZmU2NyZWVuV2luZG93Ojpu
YXRpdmVTaGFyZWREaXNwbGF5KCkgY29uc3QKIHsKLSAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSB2
aXNJbmZvOworICAgIHJldHVybiBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogfQog
CiBib29sIFgxMU9mZlNjcmVlbldpbmRvdzo6aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkg
Y29uc3QKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmggU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oCmluZGV4IGEzOTg2NWQuLjg5N2Vh
MjYgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvWDExV2luZG93UmVzb3VyY2VzLmgKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaApAQCAtMjksMTMgKzI5LDIwIEBA
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgIk93blB0clgxMS5oIgogCi0jaW5jbHVkZSA8b3BlbmdsL0dMRGVmcy5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
CisjaWYgVVNFKEVHTCkKKyNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CisjZW5kaWYKKwogI2lu
Y2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5z
aW9ucy9YcmVuZGVyLmg+CiAjZW5kaWYKQEAgLTE0MywxOSArMTUwLDE5IEBAIGNsYXNzIFgxMU9m
ZlNjcmVlbldpbmRvdyB7CiBwdWJsaWM6CiAgICAgWDExT2ZmU2NyZWVuV2luZG93KCk7CiAgICAg
dmlydHVhbCB+WDExT2ZmU2NyZWVuV2luZG93KCk7Ci0gICAgdm9pZCBjcmVhdGVPZmZzY3JlZW5X
aW5kb3codWludDMyX3QqKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICB2b2lkIGNy
ZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCosIGNvbnN0IFhWaXN1YWxJbmZvJiwgY29uc3Qg
SW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKKyNpZiBVU0UoRUdMKQorICAgIHZvaWQgY3JlYXRl
T2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiwgY29uc3QgRUdMaW50LCBjb25zdCBJbnRTaXplJiA9
IEludFNpemUoMSwgMSkpOworI2VuZGlmCisjZW5kaWYKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3co
Y29uc3QgdWludDMyX3QpOwogICAgIHZvaWQgcmVTaXplV2luZG93KGNvbnN0IEludFJlY3QmLCBj
b25zdCB1aW50MzJfdCk7CiAgICAgRGlzcGxheSogbmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0
OwotI2lmIFVTRShFR0wpCi0gICAgYm9vbCBzZXRWaXN1YWxJZChjb25zdCBFR0xpbnQpOwotI2Vu
ZGlmCi0gICAgdm9pZCBzZXRWaXN1YWxJbmZvKFhWaXN1YWxJbmZvKik7CiAgICAgYm9vbCBpc1hS
ZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
U2hhcmVkWDExUmVzb3VyY2VzPiBtX3NoYXJlZFJlc291cmNlczsKLSAgICBYVmlzdWFsSW5mbyog
bV9jb25maWdWaXN1YWxJbmZvOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="204011"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185694</attachid>
            <date>2013-01-31 00:04:06 -0800</date>
            <delta_ts>2013-01-31 00:18:11 -0800</delta_ts>
            <desc>patchforlanding</desc>
            <filename>x11changes.patch</filename>
            <type>text/plain</type>
            <size>18562</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRmZDUzZTUuLjE5ODU1NTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEz
LTAxLTIwIEtvbmRhcGFsbHkgS2FseWFuIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VmbF1bV2ViR0xdIEFkZCBiZXR0ZXIgc3VwcG9ydCB0byB0cmFjayBhbmQgZnJl
ZSBYUmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAg
ICAgICAgV2UgbGVhayBNZW1vcnkgZHVyaW5nIGNvbmZpZyBzZWxlY3Rpb24gYXMgd2UgZG9udCBm
cmVlIHRlbXBvcmFyeQorICAgICAgICBhbGxvY2F0ZWQgdmlzdWFscywgY29uZmlnIGV0Yy4gVGhp
cyBwYXRjaCBlbnN1cmVzIHRoYXQgd2UgZG9udCBsZWFrIGFueQorICAgICAgICBtZW1vcnkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBXZWJHTCB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OkdMWENvbmZp
Z1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjp2aXN1YWxJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4
dENvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNv
bnRleHRDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OmNyZWF0
ZVN1cmZhY2VDb25maWcpOgorICAgICAgICAoR0xYQ29uZmlnU2VsZWN0b3IpOgorICAgICAgICBS
ZW1vdmVkIFhWaXN1YWxJbmZvIGFzIG1lbWJlciB2YXJpYWJsZS4gRml4ZWQgbWVtb3J5IGxlYWtz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0
clgxMS5oOiBBZGRlZC4KKyAgICAgICAgKE93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Ok93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpPd25QdHJYMTE6On5Pd25Q
dHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvciBUKik6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Om9wZXJhdG9yLT4pOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpnZXQp
OgorICAgICAgICBDYWxscyBYRnJlZSBvbiBwb2ludGVyIHRvIG1lbW9yeSBhbGxvY2F0ZWQgYnkg
WCB3aGVuIHRoZSBjbGFzcyBnb2VzIG91dCBvZiBzY29wZS4KKyAgICAgICAgT3duUHRyIGNhbm5v
dCBiZSB1c2VkIGhlcmUgYXMgR0xYRkJDb25maWcgaXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9m
IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gx
MVdpbmRvd1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OlgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5X
aW5kb3c6On5YMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3Vy
Y2VzLmg6CisgICAgICAgIChYMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICBSZW1vdmVkIHVu
dXNlZCBjb2RlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisKIDIwMTMtMDEtMjkgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKaW5kZXggYjUyNGFiNS4u
MjZkNTZhNSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC01NywxMiArNTcsNyBAQCBFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9uYXRpdmVSZXNvdXJjZS0+c2V0VmlzdWFsSWQo
dmlzdWFsSWQpKSB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNjcmVlbldpbmRvdygmbV9idWZmZXJI
YW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZlNjcmVlbldpbmRvdygmbV9i
dWZmZXJIYW5kbGUsIHZpc3VhbElkKTsKIAogICAgIGlmICghbV9idWZmZXJIYW5kbGUpIHsKICAg
ICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4IDdlMGNm
YzAuLjZlNTU2YmYgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKQEAgLTM5LDcgKzM5
LDYgQEAgcHVibGljOgogICAgIEdMWENvbmZpZ1NlbGVjdG9yKERpc3BsYXkqIHhEaXNwbGF5LCBi
b29sIHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAgICAgICAgOiBtX3BidWZmZXJGQkNvbmZp
ZygwKQogICAgICAgICAsIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZygwKQotICAgICAgICAsIG1f
dmlzdWFsSW5mbygwKQogICAgICAgICAsIG1fc2hhcmVkRGlzcGxheSh4RGlzcGxheSkKICAgICAg
ICAgLCBtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbihzdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24p
CiAgICAgewpAQCAtNDksOSArNDgsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBY
VmlzdWFsSW5mbyogdmlzdWFsSW5mbygpIGNvbnN0CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm8oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlzdWFsSW5mbzsKKyAgICAgICAgaWYgKCFz
dXJmYWNlQ29udGV4dENvbmZpZygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAg
cmV0dXJuIGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIG1fc3VyZmFj
ZUNvbnRleHRGQkNvbmZpZyk7CiAgICAgfQogCiAgICAgR0xYRkJDb25maWcgcEJ1ZmZlckNvbnRl
eHRDb25maWcoKQpAQCAtNjksMTAgKzcxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgICAgICBHTFhGQkNv
bmZpZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNj
cmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncyk7
CisgICAgICAgICAgICBPd25QdHJYMTE8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25m
aWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJp
YnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAgICAgICAgICAgICBpZiAobnVtQXZhaWxh
YmxlQ29uZmlncykKICAgICAgICAgICAgICAgICBtX3BidWZmZXJGQkNvbmZpZyA9IHRlbXBbMF07
Ci0gICAgICAgICAgICBYRnJlZSh0ZW1wKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBt
X3BidWZmZXJGQkNvbmZpZzsKQEAgLTgwLDIzICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIEdMWEZC
Q29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCkKICAgICB7Ci0gICAgICAgIGlmICghbV9zdXJm
YWNlQ29udGV4dEZCQ29uZmlnKSB7Ci0gICAgICAgICAgICBzdGF0aWMgaW50IGF0dHJpYnV0ZXNb
XSA9IHsKLSAgICAgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCi0gICAgICAgICAgICAgICAgR0xY
X0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAotICAgICAgICAgICAgICAgIEdMWF9SRU5E
RVJfVFlQRSwgICBHTFhfUkdCQV9CSVQsCi0gICAgICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAg
ICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCi0gICAgICAgICAg
ICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0FMUEhBX1NJ
WkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0RFUFRIX1NJWkUsICAgIDEsCi0gICAgICAg
ICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUsIEdMWF9UUlVFX0NPTE9SLAotICAgICAgICAgICAg
ICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAotICAgICAgICAgICAgICAgIE5vbmUKLSAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0
ZUNvbmZpZyhhdHRyaWJ1dGVzKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIW1fc3VyZmFjZUNv
bnRleHRGQkNvbmZpZykKKyAgICAgICAgICAgIGNyZWF0ZVN1cmZhY2VDb25maWcoKTsKIAogICAg
ICAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnOwogICAgIH0KQEAgLTEwOCw1NiAr
OTQsNTUgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBHTFhGQkNvbmZpZyBjcmVh
dGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSkKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2VD
b25maWcoKQogICAgIHsKLSAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAg
IG1fdmlzdWFsSW5mbyA9IDA7Ci0gICAgICAgIEdMWEZCQ29uZmlnKiB0ZW1wID0gZ2xYQ2hvb3Nl
RkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSks
IGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKTsKKyAgICAgICAgc3RhdGljIGludCBh
dHRyaWJ1dGVzW10gPSB7CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBH
TFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVS
X1RZUEUsICAgR0xYX1JHQkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEs
CisgICAgICAgICAgICBHTFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVF
X1NJWkUsICAgICAxLAorICAgICAgICAgICAgR0xYX0FMUEhBX1NJWkUsICAgIDEsCisgICAgICAg
ICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBF
LCBHTFhfVFJVRV9DT0xPUiwKKyAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAor
ICAgICAgICAgICAgTm9uZQorICAgICAgICB9OwogCi0gICAgICAgIGlmICghbnVtQXZhaWxhYmxl
Q29uZmlncykKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQgbnVtQXZhaWxhYmxl
Q29uZmlnczsKKyAgICAgICAgT3duUHRyWDExPEdMWEZCQ29uZmlnPiB0ZW1wKGdsWENob29zZUZC
Q29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBh
dHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCi0gICAgICAgIEdMWEZCQ29uZmln
IHNlbGVjdGVkQ29uZmlnID0gMDsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAg
ICBpZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3MpIHsKKyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRl
eHRGQkNvbmZpZyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAg
ICBPd25QdHJYMTE8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm87CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAobV92aXN1YWxJbmZvKQotICAgICAgICAgICAgICAgIFhGcmVlKG1fdmlzdWFsSW5mbyk7Ci0K
LSAgICAgICAgICAgIG1fdmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3No
YXJlZERpc3BsYXksIHRlbXBbaV0pOwotICAgICAgICAgICAgaWYgKCFtX3Zpc3VhbEluZm8pCisg
ICAgICAgICAgICBzY29wZWRWaXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1f
c2hhcmVkRGlzcGxheSwgdGVtcFtpXSk7CisgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbElu
Zm8uZ2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgICAgICAgICBpZiAobV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pIHsKLSAg
ICAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9zaGFyZWREaXNwbGF5LCBtX3Zpc3VhbEluZm8tPnZpc3VhbCk7CisgICAgICAg
ICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9y
bWF0KG1fc2hhcmVkRGlzcGxheSwgc2NvcGVkVmlzdWFsSW5mby0+dmlzdWFsKTsKICAgICAgICAg
ICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRl
eHRGQkNvbmZpZyA9IHRlbXBbaV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9
PSAzMikgewotI2Vsc2UKLSAgICAgICAgICAgIGlmIChtX3Zpc3VhbEluZm8tPmRlcHRoID09IDMy
KSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbaV07Ci0g
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgfQorI2VuZGlmCisgICAg
ICAgICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyAmJiBzY29wZWRWaXN1YWxJbmZv
LT5kZXB0aCA9PSAzMikKKyAgICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcg
PSB0ZW1wW2ldOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1
YWwgc3VwcG9ydGluZyBhbHBoYSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgot
ICAgICAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBb
MF07Ci0gICAgICAgICAgICBtX3Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWco
bV9zaGFyZWREaXNwbGF5LCB0ZW1wWzBdKTsKLSAgICAgICAgfQotCi0gICAgICAgIFhGcmVlKHRl
bXApOwotCi0gICAgICAgIHJldHVybiBzZWxlY3RlZENvbmZpZzsKKyAgICAgICAgaWYgKCFtX3N1
cmZhY2VDb250ZXh0RkJDb25maWcpCisgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25m
aWcgPSB0ZW1wWzBdOwogICAgIH0KIAogICAgIEdMWEZCQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmln
OwogICAgIEdMWEZCQ29uZmlnIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsKLSAgICBYVmlzdWFs
SW5mbyogbV92aXN1YWxJbmZvOwogICAgIERpc3BsYXkqIG1fc2hhcmVkRGlzcGxheTsKICAgICBi
b29sIG1fc3VwcG9ydHNYUmVuZGVyRXh0ZW5zaW9uOwogfTsKZGlmZiAtLWdpdCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmlu
ZGV4IDJkNmM0ZjQuLjgwZmMyNjIgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApAQCAtNDUsMTQgKzQ1
LDE0IEBAIEdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2UoKQogICAgIH0K
IAogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgR0xYQ29uZmlnU2VsZWN0b3Io
bV9zaGFyZWREaXNwbGF5LCBtX25hdGl2ZVJlc291cmNlLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBw
b3J0ZWQoKSkpOworICAgIE93blB0clgxMTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1Nl
bGVjdG9yLT52aXN1YWxJbmZvKCkpOwogCi0gICAgaWYgKCFjb25maWd1cmF0aW9uKCkpIHsKKyAg
ICBpZiAoIXZpc0luZm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9uYXRpdmVSZXNvdXJjZS0+c2V0VmlzdWFsSW5mbyhtX2NvbmZp
Z1NlbGVjdG9yLT52aXN1YWxJbmZvKCkpOwotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNy
ZWF0ZU9mZlNjcmVlbldpbmRvdygmbV9idWZmZXJIYW5kbGUsICp2aXNJbmZvLmdldCgpKTsKIAog
ICAgIGlmICghbV9idWZmZXJIYW5kbGUpIHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Pd25QdHJYMTEu
aCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvT3duUHRyWDEx
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3NzYxMAotLS0gL2Rldi9u
dWxsCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvT3du
UHRyWDExLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBP
d25QdHJYMTFfaAorI2RlZmluZSBPd25QdHJYMTFfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgT3duUHRyWDExIHsKKworICAgIE93blB0clgx
MSgpIDogbV94UmVzb3VyY2UoMCkgeyB9CisgICAgT3duUHRyWDExKFQqIHhSZXNvdXJjZSkgOiBt
X3hSZXNvdXJjZSh4UmVzb3VyY2UpIHsgfQorCisgICAgfk93blB0clgxMSgpCisgICAgeworICAg
ICAgICBpZiAobV94UmVzb3VyY2UpCisgICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJjZSk7Cisg
ICAgfQorCisgICAgT3duUHRyWDExJiBvcGVyYXRvcj0oVCogeFJlc291cmNlKQorICAgIHsKKyAg
ICAgICAgaWYgKG1feFJlc291cmNlKQorICAgICAgICAgICAgWEZyZWUobV94UmVzb3VyY2UpOwor
CisgICAgICAgIG1feFJlc291cmNlID0geFJlc291cmNlOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgb3BlcmF0b3IgVCooKSBjb25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsg
fQorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsgfQorICAg
IFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1feFJlc291cmNlOyB9CisKK3ByaXZhdGU6CisgICAg
T3duUHRyWDExKGNvbnN0IE93blB0clgxMSYpOworICAgIE93blB0clgxMSYgb3BlcmF0b3I9KGNv
bnN0IE93blB0clgxMSYpOworICAgIHN0YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCk7
CisgICAgc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkKik7CisgICAgVCogbV94UmVz
b3VyY2U7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMu
Y3BwCmluZGV4IDVhNTdhODEuLjNlMjYzZWEgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcAorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291
cmNlcy5jcHAKQEAgLTM0LDE3ICszNCwxMiBAQCBTaGFyZWRYMTFSZXNvdXJjZXMqIFNoYXJlZFgx
MVJlc291cmNlczo6bV9zdGF0aWNTaGFyZWRSZXNvdXJjZSA9IDA7CiAKIFgxMU9mZlNjcmVlbldp
bmRvdzo6WDExT2ZmU2NyZWVuV2luZG93KCkKICAgICA6IG1fc2hhcmVkUmVzb3VyY2VzKDApCi0g
ICAgLCBtX2NvbmZpZ1Zpc3VhbEluZm8oMCkKIHsKICAgICBtX3NoYXJlZFJlc291cmNlcyA9IFNo
YXJlZFgxMVJlc291cmNlczo6Y3JlYXRlKCk7CiB9CiAKIFgxMU9mZlNjcmVlbldpbmRvdzo6flgx
MU9mZlNjcmVlbldpbmRvdygpCiB7Ci0gICAgaWYgKG1fY29uZmlnVmlzdWFsSW5mbykgewotICAg
ICAgICBYRnJlZShtX2NvbmZpZ1Zpc3VhbEluZm8pOwotICAgICAgICBtX2NvbmZpZ1Zpc3VhbElu
Zm8gPSAwOwotICAgIH0KIH0KIAogdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OnJlU2l6ZVdpbmRv
dyhjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKQEAgLTUz
LDcgKzQ4LDggQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OnJlU2l6ZVdpbmRvdyhjb25zdCBJ
bnRSZWN0JiBuZXdSZWN0LCBjb25zdCB1aW50MzJfdCB3aW4KICAgICBYRmx1c2gobV9zaGFyZWRS
ZXNvdXJjZXMtPngxMURpc3BsYXkoKSk7CiB9CiAKLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93Ojpj
cmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQorI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQordm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRv
dyh1aW50MzJfdCogaGFuZGxlSWQsIGNvbnN0IFhWaXN1YWxJbmZvJiB2aXNJbmZvLCBjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIGlmICghbV9zaGFyZWRSZXNvdXJjZXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYyLDcgKzU4LDcgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9m
ZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCiAgICAgaWYgKCFkaXNwbGF5KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykgeworICAgIGlmICgh
dmlzSW5mby52aXN1YWwpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZmluZCB2YWxp
ZCBYVmlzdWFsLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzEsMTMgKzY3LDE0IEBA
IHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3Qq
IGhhbmRsZUlkKQogICAgIGlmICgheFdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29s
b3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCB4V2luZG93LCBtX2NvbmZpZ1Zp
c3VhbEluZm8tPnZpc3VhbCwgQWxsb2NOb25lKTsKKyAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0
ZUNvbG9ybWFwKGRpc3BsYXksIHhXaW5kb3csIHZpc0luZm8udmlzdWFsLCBBbGxvY05vbmUpOwog
ICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZTsKICAgICBhdHRyaWJ1dGUuYmFja2dy
b3VuZF9waXhlbCA9IFdoaXRlUGl4ZWwoZGlzcGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmJvcmRl
cl9waXhlbCA9IEJsYWNrUGl4ZWwoZGlzcGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmNvbG9ybWFw
ID0gY21hcDsKKyAgICBhdHRyaWJ1dGUuZXZlbnRfbWFzayA9IFJlc2l6ZVJlZGlyZWN0TWFzazsK
ICAgICB1aW50MzJfdCB0ZW1wSGFuZGxlSWQ7Ci0gICAgdGVtcEhhbmRsZUlkID0gWENyZWF0ZVdp
bmRvdyhkaXNwbGF5LCB4V2luZG93LCAwLCAwLCAxLCAxLCAwLCBtX2NvbmZpZ1Zpc3VhbEluZm8t
PmRlcHRoLCBJbnB1dE91dHB1dCwgbV9jb25maWdWaXN1YWxJbmZvLT52aXN1YWwsIENXQmFja1Bp
eGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhdHRyaWJ1dGUpOworICAgIHRlbXBI
YW5kbGVJZCA9IFhDcmVhdGVXaW5kb3coZGlzcGxheSwgeFdpbmRvdywgMCwgMCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCAwLCB2aXNJbmZvLmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzSW5m
by52aXN1YWwsIENXQmFja1BpeGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhdHRy
aWJ1dGUpOwogCiAgICAgaWYgKCF0ZW1wSGFuZGxlSWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIG9mZnNjcmVlbiB3aW5kb3cuIik7CkBAIC04Niw4NyArODMsNjcgQEAg
dm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCog
aGFuZGxlSWQpCiAKICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChkaXNwbGF5LCB0ZW1w
SGFuZGxlSWQsIDApOwogICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhkaXNwbGF5LCB0ZW1w
SGFuZGxlSWQsIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyAgICBYTWFwV2luZG93KGRpc3Bs
YXksIHRlbXBIYW5kbGVJZCk7CiAgICAgKmhhbmRsZUlkID0gdGVtcEhhbmRsZUlkOwotCi0gICAg
aWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkKLSAg
ICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQpOwotCi19Ci0KLXZvaWQgWDEx
T2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQot
ewotICAgIGlmICghd2luZG93SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIERpc3BsYXkqIGRp
c3BsYXkgPSBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwotICAgIGlmICghZGlzcGxh
eSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93
SWQpOwotfQotCi1EaXNwbGF5KiBYMTFPZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3Bs
YXkoKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgp
OwogfQogCiAjaWYgVVNFKEVHTCkKLWJvb2wgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJ
ZChjb25zdCBFR0xpbnQgaWQpCit2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2Ny
ZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCwgY29uc3QgRUdMaW50IGlkLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIFZpc3VhbElEIHZpc3VhbElkID0gc3RhdGljX2Nhc3Q8VmlzdWFs
SUQ+KGlkKTsKIAogICAgIGlmICghdmlzdWFsSWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRUdMIGhhcyBzdWdnZXN0ZWQgYSB2aXN1YWwgaWQsIHNv
IGdldCB0aGUgcmVzdCBvZiB0aGUgdmlzdWFsIGluZm8gZm9yIHRoYXQgaWQuCiAgICAgWFZpc3Vh
bEluZm8gdmlzdWFsSW5mb1RlbXBsYXRlOwogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBsYXRl
LCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlzdWFs
aWQgPSB2aXN1YWxJZDsKLQotICAgIFhWaXN1YWxJbmZvKiBjaG9zZW5WaXN1YWxJbmZvOwogICAg
IGludCBtYXRjaGluZ0NvdW50ID0gMDsKLSAgICBjaG9zZW5WaXN1YWxJbmZvID0gWEdldFZpc3Vh
bEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCk7Ci0gICAgaWYgKGNob3NlblZpc3VhbElu
Zm8pIHsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgaWYgKG1fc2hhcmVkUmVz
b3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgWFJl
bmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVk
UmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIGNob3NlblZpc3VhbEluZm8tPnZpc3VhbCk7Ci0gICAg
ICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAg
ICAgICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOwotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIE93blB0clgxMTxYVmlzdWFsSW5mbz4gbWF0
Y2hpbmdWaXN1YWxzID0gYWRvcHRQdHIoWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMt
PngxMURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCkpOworICAgIFhWaXN1YWxJbmZvKiBmb3VuZFZpc3VhbCA9IDA7CisKKyAgICBpZiAo
bWF0Y2hpbmdWaXN1YWxzKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpPCBtYXRjaGluZ0Nv
dW50OyBpKyspIHsKKyAgICAgICAgICAgIFhWaXN1YWxJbmZvKiB0ZW1wID0gJm1hdGNoaW5nVmlz
dWFsc1tpXTsKKworICAgICAgICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJF
eHRlbnNpb25TdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0
KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDEx
RGlzcGxheSgpLCB0ZW1wLT52aXN1YWwpOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYg
Zm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkgeworICAgICAgICAgICAgICAgICAgICBmb3Vu
ZFZpc3VhbCA9IHRlbXA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRlbXAtPmRlcHRoID09IDMy
KSB7CisgICAgICAgICAgICAgICAgZm91bmRWaXN1YWwgPSB0ZW1wOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKGNo
b3NlblZpc3VhbEluZm8tPmRlcHRoID09IDMyKSB7Ci0gICAgICAgICAgICBtX2NvbmZpZ1Zpc3Vh
bEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykgewotICAgICAgICBt
ZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7Ci0gICAg
ICAgIFhWaXN1YWxJbmZvKiBtYXRjaGluZ1Zpc3VhbHM7Ci0gICAgICAgIGludCBtYXRjaGluZ0Nv
dW50ID0gMDsKKyAgICAgICAgaWYgKGZvdW5kVmlzdWFsKQorICAgICAgICAgICAgY3JlYXRlT2Zm
U2NyZWVuV2luZG93KGhhbmRsZUlkLCAqZm91bmRWaXN1YWwsIHNpemUpOworICAgIH0KK30KKyNl
bmRpZgogCi0gICAgICAgIHZpc3VhbEluZm9UZW1wbGF0ZS5kZXB0aCA9IGNob3NlblZpc3VhbElu
Zm8tPmRlcHRoOwotICAgICAgICBtYXRjaGluZ1Zpc3VhbHMgPSBYR2V0VmlzdWFsSW5mbyhtX3No
YXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxEZXB0aE1hc2ssICZ2aXN1YWxJbmZv
VGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKKyNlbmRpZgogCi0gICAgICAgIGlmIChtYXRjaGlu
Z1Zpc3VhbHMpIHsKLSAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zp
c3VhbHNbMF07Ci0gICAgICAgICAgICBYRnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Cit2b2lkIFgxMU9mZlNjcmVlbldpbmRv
dzo6ZGVzdHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKK3sKKyAgICBpZiAoIXdp
bmRvd0lkKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykK
LSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgWFZpc3VhbCBJbmZvLiIpOwor
ICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwor
ICAgIGlmICghZGlzcGxheSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvd0lkKTsKIH0KLSNlbmRpZgogCi12b2lk
IFgxMU9mZlNjcmVlbldpbmRvdzo6c2V0VmlzdWFsSW5mbyhYVmlzdWFsSW5mbyogdmlzSW5mbykK
K0Rpc3BsYXkqIFgxMU9mZlNjcmVlbldpbmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0
CiB7Ci0gICAgbV9jb25maWdWaXN1YWxJbmZvID0gdmlzSW5mbzsKKyAgICByZXR1cm4gbV9zaGFy
ZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKIH0KIAogYm9vbCBYMTFPZmZTY3JlZW5XaW5kb3c6
OmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185698</attachid>
            <date>2013-01-31 00:18:11 -0800</date>
            <delta_ts>2013-01-31 03:00:54 -0800</delta_ts>
            <desc>patchforlanding</desc>
            <filename>x11commitpatch.patch</filename>
            <type>text/plain</type>
            <size>19067</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRmZDUzZTUuLjE5ODU1NTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEz
LTAxLTIwIEtvbmRhcGFsbHkgS2FseWFuIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VmbF1bV2ViR0xdIEFkZCBiZXR0ZXIgc3VwcG9ydCB0byB0cmFjayBhbmQgZnJl
ZSBYUmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAg
ICAgICAgV2UgbGVhayBNZW1vcnkgZHVyaW5nIGNvbmZpZyBzZWxlY3Rpb24gYXMgd2UgZG9udCBm
cmVlIHRlbXBvcmFyeQorICAgICAgICBhbGxvY2F0ZWQgdmlzdWFscywgY29uZmlnIGV0Yy4gVGhp
cyBwYXRjaCBlbnN1cmVzIHRoYXQgd2UgZG9udCBsZWFrIGFueQorICAgICAgICBtZW1vcnkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBXZWJHTCB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OkdMWENvbmZp
Z1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjp2aXN1YWxJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4
dENvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNv
bnRleHRDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OmNyZWF0
ZVN1cmZhY2VDb25maWcpOgorICAgICAgICAoR0xYQ29uZmlnU2VsZWN0b3IpOgorICAgICAgICBS
ZW1vdmVkIFhWaXN1YWxJbmZvIGFzIG1lbWJlciB2YXJpYWJsZS4gRml4ZWQgbWVtb3J5IGxlYWtz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0
clgxMS5oOiBBZGRlZC4KKyAgICAgICAgKE93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Ok93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpPd25QdHJYMTE6On5Pd25Q
dHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvciBUKik6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Om9wZXJhdG9yLT4pOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpnZXQp
OgorICAgICAgICBDYWxscyBYRnJlZSBvbiBwb2ludGVyIHRvIG1lbW9yeSBhbGxvY2F0ZWQgYnkg
WCB3aGVuIHRoZSBjbGFzcyBnb2VzIG91dCBvZiBzY29wZS4KKyAgICAgICAgT3duUHRyIGNhbm5v
dCBiZSB1c2VkIGhlcmUgYXMgR0xYRkJDb25maWcgaXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9m
IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gx
MVdpbmRvd1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OlgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5X
aW5kb3c6On5YMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3Vy
Y2VzLmg6CisgICAgICAgIChYMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICBSZW1vdmVkIHVu
dXNlZCBjb2RlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisKIDIwMTMtMDEtMjkgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQg
Y2xhaW1zIGl0IHN1cHBvcnRzIGFwcGxpY2F0aW9uL3gtZGlza2NvcHksIGJyZWFraW5nIGRvd25s
b2Fkcy4KQEAgLTI2NTI3LDcgKzI2NTc1LDcgQEAKIAogMjAxMy0wMS0wNiAgU2ViYXN0aWFuIERy
w7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgogCi0gICAgICAgIEJ1Z8Kg
MTA2MTc3IC0gW0dTdHJlYW1lcl0gRG9uJ3QgY2FsbCBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMo
KSB3aXRoIG5vbi1maXhlZCBjYXBzCisgICAgICAgIEJ1ZyAxMDYxNzcgLSBbR1N0cmVhbWVyXSBE
b24ndCBjYWxsIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygpIHdpdGggbm9uLWZpeGVkIGNhcHMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE3Nwog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3Bw
CmluZGV4IGI1MjRhYjUuLjI2ZDU2YTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcApAQCAtNTcsMTIg
KzU3LDcgQEAgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNwb3J0U3Vy
ZmFjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fbmF0aXZlUmVzb3Vy
Y2UtPnNldFZpc3VhbElkKHZpc3VhbElkKSkgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZzY3JlZW5X
aW5kb3coJm1fYnVmZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZT
Y3JlZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlLCB2aXN1YWxJZCk7CiAKICAgICBpZiAoIW1fYnVm
ZmVySGFuZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0
b3IuaAppbmRleCA3ZTBjZmMwLi5kZDFiNjJiIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rv
ci5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBHTFhDb25maWdTZWxlY3RvcihEaXNw
bGF5KiB4RGlzcGxheSwgYm9vbCBzdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pCiAgICAgICAgIDog
bV9wYnVmZmVyRkJDb25maWcoMCkKICAgICAgICAgLCBtX3N1cmZhY2VDb250ZXh0RkJDb25maWco
MCkKLSAgICAgICAgLCBtX3Zpc3VhbEluZm8oMCkKICAgICAgICAgLCBtX3NoYXJlZERpc3BsYXko
eERpc3BsYXkpCiAgICAgICAgICwgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24oc3VwcG9ydHNY
UmVuZGVyRXh0ZW5zaW9uKQogICAgIHsKQEAgLTQ5LDkgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKSBjb25zdAorICAgIFhWaXN1
YWxJbmZvKiB2aXN1YWxJbmZvKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Zpc3VhbEluZm87
CisgICAgICAgIGlmICghc3VyZmFjZUNvbnRleHRDb25maWcoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIHJldHVybiBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWRE
aXNwbGF5LCBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpOwogICAgIH0KIAogICAgIEdMWEZCQ29u
ZmlnIHBCdWZmZXJDb250ZXh0Q29uZmlnKCkKQEAgLTY5LDEwICs3MSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAg
ICAgICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERp
c3BsYXksIERlZmF1bHRTY3JlZW4obV9zaGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2
YWlsYWJsZUNvbmZpZ3MpOworICAgICAgICAgICAgT3duUHRyWDExPEdMWEZCQ29uZmlnPiB0ZW1w
KGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3NoYXJl
ZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogICAgICAgICAg
ICAgaWYgKG51bUF2YWlsYWJsZUNvbmZpZ3MpCiAgICAgICAgICAgICAgICAgbV9wYnVmZmVyRkJD
b25maWcgPSB0ZW1wWzBdOwotICAgICAgICAgICAgWEZyZWUodGVtcCk7CiAgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gbV9wYnVmZmVyRkJDb25maWc7CkBAIC04MCwyMyArODEsOCBAQCBwdWJs
aWM6CiAKICAgICBHTFhGQkNvbmZpZyBzdXJmYWNlQ29udGV4dENvbmZpZygpCiAgICAgewotICAg
ICAgICBpZiAoIW1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZykgewotICAgICAgICAgICAgc3RhdGlj
IGludCBhdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgICAgICAgICAgR0xYX0xFVkVMLCAwLAotICAg
ICAgICAgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKLSAgICAgICAg
ICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JHQkFfQklULAotICAgICAgICAgICAgICAg
IEdMWF9SRURfU0laRSwgICAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9HUkVFTl9TSVpFLCAg
ICAxLAotICAgICAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAotICAgICAgICAgICAg
ICAgIEdMWF9BTFBIQV9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9ERVBUSF9TSVpF
LCAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBFLCBHTFhfVFJVRV9DT0xP
UiwKLSAgICAgICAgICAgICAgICBHTFhfRE9VQkxFQlVGRkVSLCAgVHJ1ZSwKLSAgICAgICAgICAg
ICAgICBOb25lCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0
RkJDb25maWcgPSBjcmVhdGVDb25maWcoYXR0cmlidXRlcyk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpCisgICAgICAgICAgICBjcmVhdGVTdXJmYWNl
Q29uZmlnKCk7CiAKICAgICAgICAgcmV0dXJuIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZzsKICAg
ICB9CkBAIC0xMDgsNTYgKzk0LDU3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
R0xYRkJDb25maWcgY3JlYXRlQ29uZmlnKGNvbnN0IGludCBhdHRyaWJ1dGVzW10pCisgICAgdm9p
ZCBjcmVhdGVTdXJmYWNlQ29uZmlnKCkKICAgICB7Ci0gICAgICAgIGludCBudW1BdmFpbGFibGVD
b25maWdzOwotICAgICAgICBtX3Zpc3VhbEluZm8gPSAwOwotICAgICAgICBHTFhGQkNvbmZpZyog
dGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbiht
X3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncyk7CisgICAg
ICAgIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgR0xYX0xFVkVMLCAw
LAorICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAorICAgICAg
ICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKKyAgICAgICAgICAgIEdMWF9S
RURfU0laRSwgICAgICAxLAorICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCisgICAg
ICAgICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgICAgIEdMWF9BTFBIQV9TSVpF
LCAgICAxLAorICAgICAgICAgICAgR0xYX0RFUFRIX1NJWkUsICAgIDEsCisgICAgICAgICAgICBH
TFhfWF9WSVNVQUxfVFlQRSwgR0xYX1RSVUVfQ09MT1IsCisgICAgICAgICAgICBHTFhfRE9VQkxF
QlVGRkVSLCAgVHJ1ZSwKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgfTsKIAotICAgICAgICBp
ZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3MpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
aW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7CisgICAgICAgIE93blB0clgxMTxHTFhGQkNvbmZpZz4g
dGVtcChnbFhDaG9vc2VGQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIERlZmF1bHRTY3JlZW4obV9z
aGFyZWREaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKIAotICAg
ICAgICBHTFhGQkNvbmZpZyBzZWxlY3RlZENvbmZpZyA9IDA7Ci0gICAgICAgIGJvb2wgZm91bmQg
PSBmYWxzZTsKKyAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzKSB7CisgICAgICAgICAg
ICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSAwOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKKyAgICAgICAgT3duUHRyWDExPFhWaXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZv
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF2YWlsYWJsZUNvbmZpZ3M7ICsraSkg
ewotICAgICAgICAgICAgaWYgKG1fdmlzdWFsSW5mbykKLSAgICAgICAgICAgICAgICBYRnJlZSht
X3Zpc3VhbEluZm8pOwotCi0gICAgICAgICAgICBtX3Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxG
cm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wW2ldKTsKLSAgICAgICAgICAgIGlmICgh
bV92aXN1YWxJbmZvKQorICAgICAgICAgICAgc2NvcGVkVmlzdWFsSW5mbyA9IGdsWEdldFZpc3Vh
bEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBbaV0pOworICAgICAgICAgICAgaWYg
KCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICAgICAgaWYgKG1fc3VwcG9ydHNYUmVuZGVy
RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9
IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkRGlzcGxheSwgbV92aXN1YWxJbmZvLT52
aXN1YWwpOworICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVu
ZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZERpc3BsYXksIHNjb3BlZFZpc3VhbEluZm8tPnZp
c3VhbCk7CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBo
YU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29uZmlnID0gdGVtcFtp
XTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wW2ldOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fdmlz
dWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSNlbHNlCi0gICAgICAgICAgICBpZiAobV92aXN1YWxJ
bmZvLT5kZXB0aCA9PSAzMikgeworICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnICYmIHNjb3BlZFZp
c3VhbEluZm8tPmRlcHRoID09IDMyKSB7CisgICAgICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4
dEZCQ29uZmlnID0gdGVtcFtpXTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIERpZCBub3QgZmluZCBhbnkgdmlzdWFsIHN1cHBv
cnRpbmcgYWxwaGEsIHNlbGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlIGNvbmZpZy4KLSAgICAgICAg
aWYgKCFmb3VuZCkgewotICAgICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wWzBdOwotICAg
ICAgICAgICAgbV92aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fc2hhcmVk
RGlzcGxheSwgdGVtcFswXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBYRnJlZSh0ZW1wKTsKLQot
ICAgICAgICByZXR1cm4gc2VsZWN0ZWRDb25maWc7CisgICAgICAgIGlmICghbV9zdXJmYWNlQ29u
dGV4dEZCQ29uZmlnKQorICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnID0gdGVt
cFswXTsKICAgICB9CiAKICAgICBHTFhGQkNvbmZpZyBtX3BidWZmZXJGQkNvbmZpZzsKICAgICBH
TFhGQkNvbmZpZyBtX3N1cmZhY2VDb250ZXh0RkJDb25maWc7Ci0gICAgWFZpc3VhbEluZm8qIG1f
dmlzdWFsSW5mbzsKICAgICBEaXNwbGF5KiBtX3NoYXJlZERpc3BsYXk7CiAgICAgYm9vbCBtX3N1
cHBvcnRzWFJlbmRlckV4dGVuc2lvbjsKIH07CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCAyZDZj
NGY0Li44MGZjMjYyIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBH
TFhUcmFuc3BvcnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKCkKICAgICB9CiAKICAgICBt
X2NvbmZpZ1NlbGVjdG9yID0gYWRvcHRQdHIobmV3IEdMWENvbmZpZ1NlbGVjdG9yKG1fc2hhcmVk
RGlzcGxheSwgbV9uYXRpdmVSZXNvdXJjZS0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkp
KTsKKyAgICBPd25QdHJYMTE8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdTZWxlY3Rvci0+
dmlzdWFsSW5mbygpKTsKIAotICAgIGlmICghY29uZmlndXJhdGlvbigpKSB7CisgICAgaWYgKCF2
aXNJbmZvLmdldCgpKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fbmF0aXZlUmVzb3VyY2UtPnNldFZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rv
ci0+dmlzdWFsSW5mbygpKTsKLSAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZzY3JlZW5X
aW5kb3coJm1fYnVmZmVySGFuZGxlKTsKKyAgICBtX25hdGl2ZVJlc291cmNlLT5jcmVhdGVPZmZT
Y3JlZW5XaW5kb3coJm1fYnVmZmVySGFuZGxlLCAqdmlzSW5mby5nZXQoKSk7CiAKICAgICBpZiAo
IW1fYnVmZmVySGFuZGxlKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKZGlmZiAtLWdpdCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvT3duUHRyWDExLmggU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0clgxMS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Nzc2MTAKLS0tIC9kZXYvbnVsbAorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0clgxMS5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3duUHRyWDEx
X2gKKyNkZWZpbmUgT3duUHRyWDExX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorc3RydWN0IE93blB0clgxMSB7CisKKyAgICBPd25QdHJYMTEoKSA6IG1f
eFJlc291cmNlKDApIHsgfQorICAgIE93blB0clgxMShUKiB4UmVzb3VyY2UpIDogbV94UmVzb3Vy
Y2UoeFJlc291cmNlKSB7IH0KKworICAgIH5Pd25QdHJYMTEoKQorICAgIHsKKyAgICAgICAgaWYg
KG1feFJlc291cmNlKQorICAgICAgICAgICAgWEZyZWUobV94UmVzb3VyY2UpOworICAgIH0KKwor
ICAgIE93blB0clgxMSYgb3BlcmF0b3I9KFQqIHhSZXNvdXJjZSkKKyAgICB7CisgICAgICAgIGlm
IChtX3hSZXNvdXJjZSkKKyAgICAgICAgICAgIFhGcmVlKG1feFJlc291cmNlKTsKKworICAgICAg
ICBtX3hSZXNvdXJjZSA9IHhSZXNvdXJjZTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KworICAgIG9wZXJhdG9yIFQqKCkgY29uc3QgeyByZXR1cm4gbV94UmVzb3VyY2U7IH0KKyAgICBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV94UmVzb3VyY2U7IH0KKyAgICBUKiBnZXQo
KSBjb25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsgfQorCitwcml2YXRlOgorICAgIE93blB0clgx
MShjb25zdCBPd25QdHJYMTEmKTsKKyAgICBPd25QdHJYMTEmIG9wZXJhdG9yPShjb25zdCBPd25Q
dHJYMTEmKTsKKyAgICBzdGF0aWMgdm9pZCogb3BlcmF0b3IgbmV3IChzaXplX3QpOworICAgIHN0
YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCopOworICAgIFQqIG1feFJlc291cmNlOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcAppbmRl
eCA1YTU3YTgxLi4zZTI2M2VhIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3Bw
CkBAIC0zNCwxNyArMzQsMTIgQEAgU2hhcmVkWDExUmVzb3VyY2VzKiBTaGFyZWRYMTFSZXNvdXJj
ZXM6Om1fc3RhdGljU2hhcmVkUmVzb3VyY2UgPSAwOwogCiBYMTFPZmZTY3JlZW5XaW5kb3c6Olgx
MU9mZlNjcmVlbldpbmRvdygpCiAgICAgOiBtX3NoYXJlZFJlc291cmNlcygwKQotICAgICwgbV9j
b25maWdWaXN1YWxJbmZvKDApCiB7CiAgICAgbV9zaGFyZWRSZXNvdXJjZXMgPSBTaGFyZWRYMTFS
ZXNvdXJjZXM6OmNyZWF0ZSgpOwogfQogCiBYMTFPZmZTY3JlZW5XaW5kb3c6On5YMTFPZmZTY3Jl
ZW5XaW5kb3coKQogewotICAgIGlmIChtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAgWEZy
ZWUobV9jb25maWdWaXN1YWxJbmZvKTsKLSAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gMDsK
LSAgICB9CiB9CiAKIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpyZVNpemVXaW5kb3coY29uc3Qg
SW50UmVjdCYgbmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luZG93SWQpCkBAIC01Myw3ICs0OCw4
IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpyZVNpemVXaW5kb3coY29uc3QgSW50UmVjdCYg
bmV3UmVjdCwgY29uc3QgdWludDMyX3Qgd2luCiAgICAgWEZsdXNoKG1fc2hhcmVkUmVzb3VyY2Vz
LT54MTFEaXNwbGF5KCkpOwogfQogCi12b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zm
c2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3ZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMy
X3QqIGhhbmRsZUlkLCBjb25zdCBYVmlzdWFsSW5mbyYgdmlzSW5mbywgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKICAgICBpZiAoIW1fc2hhcmVkUmVzb3VyY2VzKQogICAgICAgICByZXR1cm47CkBA
IC02Miw3ICs1OCw3IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3JlZW5X
aW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIGlmICghZGlzcGxheSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKKyAgICBpZiAoIXZpc0luZm8u
dmlzdWFsKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZpbmQgdmFsaWQgWFZpc3Vh
bC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDEzICs2NywxNCBAQCB2b2lkIFgx
MU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJ
ZCkKICAgICBpZiAoIXhXaW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9ybWFwIGNt
YXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgeFdpbmRvdywgbV9jb25maWdWaXN1YWxJbmZv
LT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1h
cChkaXNwbGF5LCB4V2luZG93LCB2aXNJbmZvLnZpc3VhbCwgQWxsb2NOb25lKTsKICAgICBYU2V0
V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGU7CiAgICAgYXR0cmlidXRlLmJhY2tncm91bmRfcGl4
ZWwgPSBXaGl0ZVBpeGVsKGRpc3BsYXksIDApOwogICAgIGF0dHJpYnV0ZS5ib3JkZXJfcGl4ZWwg
PSBCbGFja1BpeGVsKGRpc3BsYXksIDApOwogICAgIGF0dHJpYnV0ZS5jb2xvcm1hcCA9IGNtYXA7
CisgICAgYXR0cmlidXRlLmV2ZW50X21hc2sgPSBSZXNpemVSZWRpcmVjdE1hc2s7CiAgICAgdWlu
dDMyX3QgdGVtcEhhbmRsZUlkOwotICAgIHRlbXBIYW5kbGVJZCA9IFhDcmVhdGVXaW5kb3coZGlz
cGxheSwgeFdpbmRvdywgMCwgMCwgMSwgMSwgMCwgbV9jb25maWdWaXN1YWxJbmZvLT5kZXB0aCwg
SW5wdXRPdXRwdXQsIG1fY29uZmlnVmlzdWFsSW5mby0+dmlzdWFsLCBDV0JhY2tQaXhlbCB8IENX
Qm9yZGVyUGl4ZWwgfCBDV0NvbG9ybWFwLCAmYXR0cmlidXRlKTsKKyAgICB0ZW1wSGFuZGxlSWQg
PSBYQ3JlYXRlV2luZG93KGRpc3BsYXksIHhXaW5kb3csIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwgMCwgdmlzSW5mby5kZXB0aCwgSW5wdXRPdXRwdXQsIHZpc0luZm8udmlzdWFs
LCBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4ZWwgfCBDV0NvbG9ybWFwLCAmYXR0cmlidXRlKTsK
IAogICAgIGlmICghdGVtcEhhbmRsZUlkKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBvZmZzY3JlZW4gd2luZG93LiIpOwpAQCAtODYsODcgKzgzLDY3IEBAIHZvaWQgWDEx
T2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlk
KQogCiAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAoZGlzcGxheSwgdGVtcEhhbmRsZUlk
LCAwKTsKICAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlk
LCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1w
SGFuZGxlSWQpOwogICAgICpoYW5kbGVJZCA9IHRlbXBIYW5kbGVJZDsKLQotICAgIGlmIChtX3No
YXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpCi0gICAgICAgIFhN
YXBXaW5kb3coZGlzcGxheSwgdGVtcEhhbmRsZUlkKTsKLQotfQotCi12b2lkIFgxMU9mZlNjcmVl
bldpbmRvdzo6ZGVzdHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKLXsKLSAgICBp
ZiAoIXdpbmRvd0lkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
bV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvd0lkKTsKLX0K
LQotRGlzcGxheSogWDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKIH0KIAog
I2lmIFVTRShFR0wpCi1ib29sIFgxMU9mZlNjcmVlbldpbmRvdzo6c2V0VmlzdWFsSWQoY29uc3Qg
RUdMaW50IGlkKQordm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRv
dyh1aW50MzJfdCogaGFuZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBWaXN1YWxJRCB2aXN1YWxJZCA9IHN0YXRpY19jYXN0PFZpc3VhbElEPihpZCk7
CiAKICAgICBpZiAoIXZpc3VhbElkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEVHTCBoYXMgc3VnZ2VzdGVkIGEgdmlzdWFsIGlkLCBzbyBnZXQgdGhl
IHJlc3Qgb2YgdGhlIHZpc3VhbCBpbmZvIGZvciB0aGF0IGlkLgogICAgIFhWaXN1YWxJbmZvIHZp
c3VhbEluZm9UZW1wbGF0ZTsKICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6
ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLnZpc3VhbGlkID0gdmlz
dWFsSWQ7Ci0KLSAgICBYVmlzdWFsSW5mbyogY2hvc2VuVmlzdWFsSW5mbzsKICAgICBpbnQgbWF0
Y2hpbmdDb3VudCA9IDA7Ci0gICAgY2hvc2VuVmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKG1f
c2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9U
ZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOwotICAgIGlmIChjaG9zZW5WaXN1YWxJbmZvKSB7Ci0j
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+
aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpIHsKLSAgICAgICAgICAgIFhSZW5kZXJQaWN0
Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpLCBjaG9zZW5WaXN1YWxJbmZvLT52aXN1YWwpOwotICAgICAgICAgICAg
aWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAg
ICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hvc2VuVmlzdWFsSW5mbzsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBPd25QdHJYMTE8WFZpc3VhbEluZm8+IG1hdGNoaW5nVmlz
dWFscyA9IGFkb3B0UHRyKFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNw
bGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQp
KTsKKyAgICBYVmlzdWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOworCisgICAgaWYgKG1hdGNoaW5n
VmlzdWFscykgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaTwgbWF0Y2hpbmdDb3VudDsgaSsr
KSB7CisgICAgICAgICAgICBYVmlzdWFsSW5mbyogdGVtcCA9ICZtYXRjaGluZ1Zpc3VhbHNbaV07
CisKKyAgICAgICAgICAgIGlmIChtX3NoYXJlZFJlc291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9u
U3VwcG9ydGVkKCkpIHsKKyAgICAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0
ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KSwgdGVtcC0+dmlzdWFsKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+
ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRWaXN1YWwg
PSB0ZW1wOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZW1wLT5kZXB0aCA9PSAzMikgeworICAg
ICAgICAgICAgICAgIGZvdW5kVmlzdWFsID0gdGVtcDsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChjaG9zZW5WaXN1
YWxJbmZvLT5kZXB0aCA9PSAzMikgewotICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0g
Y2hvc2VuVmlzdWFsSW5mbzsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0g
ICAgfQogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAgbWVtc2V0KCZ2
aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwotICAgICAgICBYVmlz
dWFsSW5mbyogbWF0Y2hpbmdWaXN1YWxzOwotICAgICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7
CisgICAgICAgIGlmIChmb3VuZFZpc3VhbCkKKyAgICAgICAgICAgIGNyZWF0ZU9mZlNjcmVlbldp
bmRvdyhoYW5kbGVJZCwgKmZvdW5kVmlzdWFsLCBzaXplKTsKKyAgICB9Cit9CisjZW5kaWYKIAot
ICAgICAgICB2aXN1YWxJbmZvVGVtcGxhdGUuZGVwdGggPSBjaG9zZW5WaXN1YWxJbmZvLT5kZXB0
aDsKLSAgICAgICAgbWF0Y2hpbmdWaXN1YWxzID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNv
dXJjZXMtPngxMURpc3BsYXkoKSwgVmlzdWFsRGVwdGhNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRl
LCAmbWF0Y2hpbmdDb3VudCk7CisjZW5kaWYKIAotICAgICAgICBpZiAobWF0Y2hpbmdWaXN1YWxz
KSB7Ci0gICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSAmbWF0Y2hpbmdWaXN1YWxzWzBd
OwotICAgICAgICAgICAgWEZyZWUobWF0Y2hpbmdWaXN1YWxzKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfQordm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ry
b3lXaW5kb3coY29uc3QgdWludDMyX3Qgd2luZG93SWQpCit7CisgICAgaWYgKCF3aW5kb3dJZCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8pCi0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIFhWaXN1YWwgSW5mby4iKTsKKyAgICBEaXNw
bGF5KiBkaXNwbGF5ID0gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKKyAgICBpZiAo
IWRpc3BsYXkpCisgICAgICAgIHJldHVybjsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBYRGVz
dHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCk7CiB9Ci0jZW5kaWYKIAotdm9pZCBYMTFPZmZT
Y3JlZW5XaW5kb3c6OnNldFZpc3VhbEluZm8oWFZpc3VhbEluZm8qIHZpc0luZm8pCitEaXNwbGF5
KiBYMTFPZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkoKSBjb25zdAogewotICAg
IG1fY29uZmlnVmlzdWFsSW5mbyA9IHZpc0luZm87CisgICAgcmV0dXJuIG1fc2hhcmVkUmVzb3Vy
Y2VzLT54MTFEaXNwbGF5KCk7CiB9CiAKIGJvb2wgWDExT2ZmU2NyZWVuV2luZG93Ojppc1hSZW5k
ZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="204856"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185731</attachid>
            <date>2013-01-31 03:00:54 -0800</date>
            <delta_ts>2013-01-31 04:48:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>buildfix.patch</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRmZDUzZTUuLjE5ODU1NTUgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEz
LTAxLTIwIEtvbmRhcGFsbHkgS2FseWFuIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VmbF1bV2ViR0xdIEFkZCBiZXR0ZXIgc3VwcG9ydCB0byB0cmFjayBhbmQgZnJl
ZSBYUmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAg
ICAgICAgV2UgbGVhayBNZW1vcnkgZHVyaW5nIGNvbmZpZyBzZWxlY3Rpb24gYXMgd2UgZG9udCBm
cmVlIHRlbXBvcmFyeQorICAgICAgICBhbGxvY2F0ZWQgdmlzdWFscywgY29uZmlnIGV0Yy4gVGhp
cyBwYXRjaCBlbnN1cmVzIHRoYXQgd2UgZG9udCBsZWFrIGFueQorICAgICAgICBtZW1vcnkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBXZWJHTCB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdT
ZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OkdMWENvbmZp
Z1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjp2aXN1YWxJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdMWENvbmZpZ1NlbGVjdG9yOjpwQnVmZmVyQ29udGV4
dENvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6c3VyZmFjZUNv
bnRleHRDb25maWcpOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29uZmlnU2VsZWN0b3I6OmNyZWF0
ZVN1cmZhY2VDb25maWcpOgorICAgICAgICAoR0xYQ29uZmlnU2VsZWN0b3IpOgorICAgICAgICBS
ZW1vdmVkIFhWaXN1YWxJbmZvIGFzIG1lbWJlciB2YXJpYWJsZS4gRml4ZWQgbWVtb3J5IGxlYWtz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L093blB0
clgxMS5oOiBBZGRlZC4KKyAgICAgICAgKE93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Ok93blB0clgxMSk6CisgICAgICAgIChXZWJDb3JlOjpPd25QdHJYMTE6On5Pd25Q
dHJYMTEpOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6T3duUHRyWDExOjpvcGVyYXRvciBUKik6CisgICAgICAgIChXZWJDb3JlOjpP
d25QdHJYMTE6Om9wZXJhdG9yLT4pOgorICAgICAgICAoV2ViQ29yZTo6T3duUHRyWDExOjpnZXQp
OgorICAgICAgICBDYWxscyBYRnJlZSBvbiBwb2ludGVyIHRvIG1lbW9yeSBhbGxvY2F0ZWQgYnkg
WCB3aGVuIHRoZSBjbGFzcyBnb2VzIG91dCBvZiBzY29wZS4KKyAgICAgICAgT3duUHRyIGNhbm5v
dCBiZSB1c2VkIGhlcmUgYXMgR0xYRkJDb25maWcgaXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9m
IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gx
MVdpbmRvd1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OlgxMU9mZlNjcmVlbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5X
aW5kb3c6On5YMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6WDExT2ZmU2NyZWVuV2luZG93OjpuYXRpdmVTaGFyZWREaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3Vy
Y2VzLmg6CisgICAgICAgIChYMTFPZmZTY3JlZW5XaW5kb3cpOgorICAgICAgICBSZW1vdmVkIHVu
dXNlZCBjb2RlLiBGaXhlZCBtZW1vcnkgbGVha3MuCisKIDIwMTMtMDEtMjkgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKaW5kZXggYjUyNGFiNS4u
MjZkNTZhNSAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2VnbC9FR0xTdXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC01NywxMiArNTcsNyBAQCBFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9uYXRpdmVSZXNvdXJjZS0+c2V0VmlzdWFsSWQo
dmlzdWFsSWQpKSB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNjcmVlbldpbmRvdygmbV9idWZmZXJI
YW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZlNjcmVlbldpbmRvdygmbV9i
dWZmZXJIYW5kbGUsIHZpc3VhbElkKTsKIAogICAgIGlmICghbV9idWZmZXJIYW5kbGUpIHsKICAg
ICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4IDdlMGNm
YzAuLmRkMWI2MmIgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKQEAgLTM5LDcgKzM5
LDYgQEAgcHVibGljOgogICAgIEdMWENvbmZpZ1NlbGVjdG9yKERpc3BsYXkqIHhEaXNwbGF5LCBi
b29sIHN1cHBvcnRzWFJlbmRlckV4dGVuc2lvbikKICAgICAgICAgOiBtX3BidWZmZXJGQkNvbmZp
ZygwKQogICAgICAgICAsIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZygwKQotICAgICAgICAsIG1f
dmlzdWFsSW5mbygwKQogICAgICAgICAsIG1fc2hhcmVkRGlzcGxheSh4RGlzcGxheSkKICAgICAg
ICAgLCBtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbihzdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24p
CiAgICAgewpAQCAtNDksOSArNDgsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBY
VmlzdWFsSW5mbyogdmlzdWFsSW5mbygpIGNvbnN0CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm8oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlzdWFsSW5mbzsKKyAgICAgICAgaWYgKCFz
dXJmYWNlQ29udGV4dENvbmZpZygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAg
cmV0dXJuIGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIG1fc3VyZmFj
ZUNvbnRleHRGQkNvbmZpZyk7CiAgICAgfQogCiAgICAgR0xYRkJDb25maWcgcEJ1ZmZlckNvbnRl
eHRDb25maWcoKQpAQCAtNjksMTAgKzcxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgICAgICBHTFhGQkNv
bmZpZyogdGVtcCA9IGdsWENob29zZUZCQ29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNj
cmVlbihtX3NoYXJlZERpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncyk7
CisgICAgICAgICAgICBPd25QdHJYMTE8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25m
aWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSksIGF0dHJp
YnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAgICAgICAgICAgICBpZiAobnVtQXZhaWxh
YmxlQ29uZmlncykKICAgICAgICAgICAgICAgICBtX3BidWZmZXJGQkNvbmZpZyA9IHRlbXBbMF07
Ci0gICAgICAgICAgICBYRnJlZSh0ZW1wKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBt
X3BidWZmZXJGQkNvbmZpZzsKQEAgLTgwLDIzICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIEdMWEZC
Q29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCkKICAgICB7Ci0gICAgICAgIGlmICghbV9zdXJm
YWNlQ29udGV4dEZCQ29uZmlnKSB7Ci0gICAgICAgICAgICBzdGF0aWMgaW50IGF0dHJpYnV0ZXNb
XSA9IHsKLSAgICAgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCi0gICAgICAgICAgICAgICAgR0xY
X0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAotICAgICAgICAgICAgICAgIEdMWF9SRU5E
RVJfVFlQRSwgICBHTFhfUkdCQV9CSVQsCi0gICAgICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAg
ICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCi0gICAgICAgICAg
ICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0FMUEhBX1NJ
WkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0RFUFRIX1NJWkUsICAgIDEsCi0gICAgICAg
ICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUsIEdMWF9UUlVFX0NPTE9SLAotICAgICAgICAgICAg
ICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAotICAgICAgICAgICAgICAgIE5vbmUKLSAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRleHRGQkNvbmZpZyA9IGNyZWF0
ZUNvbmZpZyhhdHRyaWJ1dGVzKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIW1fc3VyZmFjZUNv
bnRleHRGQkNvbmZpZykKKyAgICAgICAgICAgIGNyZWF0ZVN1cmZhY2VDb25maWcoKTsKIAogICAg
ICAgICByZXR1cm4gbV9zdXJmYWNlQ29udGV4dEZCQ29uZmlnOwogICAgIH0KQEAgLTEwOCw1NiAr
OTQsNTcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBHTFhGQkNvbmZpZyBjcmVh
dGVDb25maWcoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSkKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2VD
b25maWcoKQogICAgIHsKLSAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAg
IG1fdmlzdWFsSW5mbyA9IDA7Ci0gICAgICAgIEdMWEZCQ29uZmlnKiB0ZW1wID0gZ2xYQ2hvb3Nl
RkJDb25maWcobV9zaGFyZWREaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fc2hhcmVkRGlzcGxheSks
IGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKTsKKyAgICAgICAgc3RhdGljIGludCBh
dHRyaWJ1dGVzW10gPSB7CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBH
TFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVS
X1RZUEUsICAgR0xYX1JHQkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEs
CisgICAgICAgICAgICBHTFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVF
X1NJWkUsICAgICAxLAorICAgICAgICAgICAgR0xYX0FMUEhBX1NJWkUsICAgIDEsCisgICAgICAg
ICAgICBHTFhfREVQVEhfU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9YX1ZJU1VBTF9UWVBF
LCBHTFhfVFJVRV9DT0xPUiwKKyAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAor
ICAgICAgICAgICAgTm9uZQorICAgICAgICB9OwogCi0gICAgICAgIGlmICghbnVtQXZhaWxhYmxl
Q29uZmlncykKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQgbnVtQXZhaWxhYmxl
Q29uZmlnczsKKyAgICAgICAgT3duUHRyWDExPEdMWEZCQ29uZmlnPiB0ZW1wKGdsWENob29zZUZC
Q29uZmlnKG1fc2hhcmVkRGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX3NoYXJlZERpc3BsYXkpLCBh
dHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCi0gICAgICAgIEdMWEZCQ29uZmln
IHNlbGVjdGVkQ29uZmlnID0gMDsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAg
ICBpZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3MpIHsKKyAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRl
eHRGQkNvbmZpZyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAg
ICBPd25QdHJYMTE8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm87CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAobV92aXN1YWxJbmZvKQotICAgICAgICAgICAgICAgIFhGcmVlKG1fdmlzdWFsSW5mbyk7Ci0K
LSAgICAgICAgICAgIG1fdmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX3No
YXJlZERpc3BsYXksIHRlbXBbaV0pOwotICAgICAgICAgICAgaWYgKCFtX3Zpc3VhbEluZm8pCisg
ICAgICAgICAgICBzY29wZWRWaXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1f
c2hhcmVkRGlzcGxheSwgdGVtcFtpXSk7CisgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbElu
Zm8uZ2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgICAgICAgICBpZiAobV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pIHsKLSAg
ICAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9zaGFyZWREaXNwbGF5LCBtX3Zpc3VhbEluZm8tPnZpc3VhbCk7CisgICAgICAg
ICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9y
bWF0KG1fc2hhcmVkRGlzcGxheSwgc2NvcGVkVmlzdWFsSW5mby0+dmlzdWFsKTsKICAgICAgICAg
ICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb25maWcgPSB0ZW1wW2ldOwotICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fc3VyZmFjZUNvbnRl
eHRGQkNvbmZpZyA9IHRlbXBbaV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobV92aXN1YWxJbmZvLT5kZXB0aCA9
PSAzMikgewotI2Vsc2UKLSAgICAgICAgICAgIGlmIChtX3Zpc3VhbEluZm8tPmRlcHRoID09IDMy
KSB7CisgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmZp
ZyA9IHRlbXBbaV07Ci0gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgJiYgc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGgg
PT0gMzIpIHsKKyAgICAgICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1w
W2ldOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGluZyBhbHBoYSwgc2Vs
ZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBpZiAoIWZvdW5kKSB7Ci0g
ICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbMF07Ci0gICAgICAgICAgICBtX3Zpc3Vh
bEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wWzBd
KTsKLSAgICAgICAgfQotCi0gICAgICAgIFhGcmVlKHRlbXApOwotCi0gICAgICAgIHJldHVybiBz
ZWxlY3RlZENvbmZpZzsKKyAgICAgICAgaWYgKCFtX3N1cmZhY2VDb250ZXh0RkJDb25maWcpCisg
ICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0RkJDb25maWcgPSB0ZW1wWzBdOwogICAgIH0KIAog
ICAgIEdMWEZCQ29uZmlnIG1fcGJ1ZmZlckZCQ29uZmlnOwogICAgIEdMWEZCQ29uZmlnIG1fc3Vy
ZmFjZUNvbnRleHRGQkNvbmZpZzsKLSAgICBYVmlzdWFsSW5mbyogbV92aXN1YWxJbmZvOwogICAg
IERpc3BsYXkqIG1fc2hhcmVkRGlzcGxheTsKICAgICBib29sIG1fc3VwcG9ydHNYUmVuZGVyRXh0
ZW5zaW9uOwogfTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IDJkNmM0ZjQuLjgwZmMyNjIgMTAw
NjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xY
U3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HTFhTdXJmYWNlLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIEdMWFRyYW5zcG9ydFN1cmZh
Y2U6OkdMWFRyYW5zcG9ydFN1cmZhY2UoKQogICAgIH0KIAogICAgIG1fY29uZmlnU2VsZWN0b3Ig
PSBhZG9wdFB0cihuZXcgR0xYQ29uZmlnU2VsZWN0b3IobV9zaGFyZWREaXNwbGF5LCBtX25hdGl2
ZVJlc291cmNlLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkpOworICAgIE93blB0clgx
MTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZvKCkpOwog
Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uKCkpIHsKKyAgICBpZiAoIXZpc0luZm8uZ2V0KCkpIHsK
ICAgICAgICAgZGVzdHJveSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uYXRp
dmVSZXNvdXJjZS0+c2V0VmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZvKCkp
OwotICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZnNjcmVlbldpbmRvdygmbV9idWZmZXJI
YW5kbGUpOworICAgIG1fbmF0aXZlUmVzb3VyY2UtPmNyZWF0ZU9mZlNjcmVlbldpbmRvdygmbV9i
dWZmZXJIYW5kbGUsICp2aXNJbmZvLmdldCgpKTsKIAogICAgIGlmICghbV9idWZmZXJIYW5kbGUp
IHsKICAgICAgICAgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Pd25QdHJYMTEuaCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvT3duUHRyWDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYjg3NzYxMAotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvT3duUHRyWDExLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBPd25QdHJYMTFfaAorI2RlZmluZSBPd25Q
dHJYMTFfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citz
dHJ1Y3QgT3duUHRyWDExIHsKKworICAgIE93blB0clgxMSgpIDogbV94UmVzb3VyY2UoMCkgeyB9
CisgICAgT3duUHRyWDExKFQqIHhSZXNvdXJjZSkgOiBtX3hSZXNvdXJjZSh4UmVzb3VyY2UpIHsg
fQorCisgICAgfk93blB0clgxMSgpCisgICAgeworICAgICAgICBpZiAobV94UmVzb3VyY2UpCisg
ICAgICAgICAgICBYRnJlZShtX3hSZXNvdXJjZSk7CisgICAgfQorCisgICAgT3duUHRyWDExJiBv
cGVyYXRvcj0oVCogeFJlc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKG1feFJlc291cmNlKQor
ICAgICAgICAgICAgWEZyZWUobV94UmVzb3VyY2UpOworCisgICAgICAgIG1feFJlc291cmNlID0g
eFJlc291cmNlOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3Ig
VCooKSBjb25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiBtX3hSZXNvdXJjZTsgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1feFJlc291cmNlOyB9CisKK3ByaXZhdGU6CisgICAgT3duUHRyWDExKGNvbnN0IE93blB0clgx
MSYpOworICAgIE93blB0clgxMSYgb3BlcmF0b3I9KGNvbnN0IE93blB0clgxMSYpOworICAgIHN0
YXRpYyB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCk7CisgICAgc3RhdGljIHZvaWQgb3BlcmF0
b3IgZGVsZXRlICh2b2lkKik7CisgICAgVCogbV94UmVzb3VyY2U7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwCmluZGV4IDVhNTdhODEuLjNlMjYz
ZWEgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvWDExV2luZG93UmVzb3VyY2VzLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKQEAgLTM0LDE3ICszNCwx
MiBAQCBTaGFyZWRYMTFSZXNvdXJjZXMqIFNoYXJlZFgxMVJlc291cmNlczo6bV9zdGF0aWNTaGFy
ZWRSZXNvdXJjZSA9IDA7CiAKIFgxMU9mZlNjcmVlbldpbmRvdzo6WDExT2ZmU2NyZWVuV2luZG93
KCkKICAgICA6IG1fc2hhcmVkUmVzb3VyY2VzKDApCi0gICAgLCBtX2NvbmZpZ1Zpc3VhbEluZm8o
MCkKIHsKICAgICBtX3NoYXJlZFJlc291cmNlcyA9IFNoYXJlZFgxMVJlc291cmNlczo6Y3JlYXRl
KCk7CiB9CiAKIFgxMU9mZlNjcmVlbldpbmRvdzo6flgxMU9mZlNjcmVlbldpbmRvdygpCiB7Ci0g
ICAgaWYgKG1fY29uZmlnVmlzdWFsSW5mbykgewotICAgICAgICBYRnJlZShtX2NvbmZpZ1Zpc3Vh
bEluZm8pOwotICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSAwOwotICAgIH0KIH0KIAogdm9p
ZCBYMTFPZmZTY3JlZW5XaW5kb3c6OnJlU2l6ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiBuZXdSZWN0
LCBjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKQEAgLTUzLDcgKzQ4LDggQEAgdm9pZCBYMTFPZmZT
Y3JlZW5XaW5kb3c6OnJlU2l6ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBjb25zdCB1
aW50MzJfdCB3aW4KICAgICBYRmx1c2gobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSk7
CiB9CiAKLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWlu
dDMyX3QqIGhhbmRsZUlkKQorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBYMTFPZmZT
Y3JlZW5XaW5kb3c6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQsIGNv
bnN0IFhWaXN1YWxJbmZvJiB2aXNJbmZvLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGlm
ICghbV9zaGFyZWRSZXNvdXJjZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzU4LDcgQEAg
dm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCog
aGFuZGxlSWQpCiAgICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fY29uZmlnVmlzdWFsSW5mbykgeworICAgIGlmICghdmlzSW5mby52aXN1YWwpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZmluZCB2YWxpZCBYVmlzdWFsLiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNzEsMTMgKzY3LDE0IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93
OjpjcmVhdGVPZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIGlmICgheFdp
bmRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xv
cm1hcChkaXNwbGF5LCB4V2luZG93LCBtX2NvbmZpZ1Zpc3VhbEluZm8tPnZpc3VhbCwgQWxsb2NO
b25lKTsKKyAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXksIHhXaW5k
b3csIHZpc0luZm8udmlzdWFsLCBBbGxvY05vbmUpOwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVz
IGF0dHJpYnV0ZTsKICAgICBhdHRyaWJ1dGUuYmFja2dyb3VuZF9waXhlbCA9IFdoaXRlUGl4ZWwo
ZGlzcGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmJvcmRlcl9waXhlbCA9IEJsYWNrUGl4ZWwoZGlz
cGxheSwgMCk7CiAgICAgYXR0cmlidXRlLmNvbG9ybWFwID0gY21hcDsKKyAgICBhdHRyaWJ1dGUu
ZXZlbnRfbWFzayA9IFJlc2l6ZVJlZGlyZWN0TWFzazsKICAgICB1aW50MzJfdCB0ZW1wSGFuZGxl
SWQ7Ci0gICAgdGVtcEhhbmRsZUlkID0gWENyZWF0ZVdpbmRvdyhkaXNwbGF5LCB4V2luZG93LCAw
LCAwLCAxLCAxLCAwLCBtX2NvbmZpZ1Zpc3VhbEluZm8tPmRlcHRoLCBJbnB1dE91dHB1dCwgbV9j
b25maWdWaXN1YWxJbmZvLT52aXN1YWwsIENXQmFja1BpeGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENX
Q29sb3JtYXAsICZhdHRyaWJ1dGUpOworICAgIHRlbXBIYW5kbGVJZCA9IFhDcmVhdGVXaW5kb3co
ZGlzcGxheSwgeFdpbmRvdywgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCB2
aXNJbmZvLmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzSW5mby52aXN1YWwsIENXQmFja1BpeGVsIHwg
Q1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhdHRyaWJ1dGUpOwogCiAgICAgaWYgKCF0ZW1w
SGFuZGxlSWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIG9mZnNjcmVl
biB3aW5kb3cuIik7CkBAIC04Niw4NyArODMsNjcgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6
OmNyZWF0ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCiAKICAgICBYU2V0V2lu
ZG93QmFja2dyb3VuZFBpeG1hcChkaXNwbGF5LCB0ZW1wSGFuZGxlSWQsIDApOwogICAgIFhDb21w
b3NpdGVSZWRpcmVjdFdpbmRvdyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQsIENvbXBvc2l0ZVJlZGly
ZWN0TWFudWFsKTsKKyAgICBYTWFwV2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCk7CiAgICAg
KmhhbmRsZUlkID0gdGVtcEhhbmRsZUlkOwotCi0gICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5p
c1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkKLSAgICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5
LCB0ZW1wSGFuZGxlSWQpOwotCi19Ci0KLXZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95
V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQotewotICAgIGlmICghd2luZG93SWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBtX3NoYXJlZFJlc291cmNl
cy0+eDExRGlzcGxheSgpOwotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93SWQpOwotfQotCi1EaXNwbGF5KiBYMTFP
ZmZTY3JlZW5XaW5kb3c6Om5hdGl2ZVNoYXJlZERpc3BsYXkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogfQogCiAjaWYgVVNFKEVHTCkKLWJv
b2wgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRWaXN1YWxJZChjb25zdCBFR0xpbnQgaWQpCit2b2lk
IFgxMU9mZlNjcmVlbldpbmRvdzo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5k
bGVJZCwgY29uc3QgRUdMaW50IGlkLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFZpc3Vh
bElEIHZpc3VhbElkID0gc3RhdGljX2Nhc3Q8VmlzdWFsSUQ+KGlkKTsKIAogICAgIGlmICghdmlz
dWFsSWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RUdMIGhhcyBzdWdnZXN0ZWQgYSB2aXN1YWwgaWQsIHNvIGdldCB0aGUgcmVzdCBvZiB0aGUgdmlz
dWFsIGluZm8gZm9yIHRoYXQgaWQuCiAgICAgWFZpc3VhbEluZm8gdmlzdWFsSW5mb1RlbXBsYXRl
OwogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8p
KTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKLQotICAgIFhW
aXN1YWxJbmZvKiBjaG9zZW5WaXN1YWxJbmZvOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsK
LSAgICBjaG9zZW5WaXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMt
PngxMURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCk7Ci0gICAgaWYgKGNob3NlblZpc3VhbEluZm8pIHsKLSNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLSAgICAgICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNp
b25TdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9
IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCks
IGNob3NlblZpc3VhbEluZm8tPnZpc3VhbCk7Ci0gICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZv
cm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKLSAgICAgICAgICAgICAgICBtX2NvbmZpZ1Zp
c3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIE93blB0clgxMTxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdWaXN1YWxzID0gYWRvcHRQdHIo
WEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgVmlzdWFsSURN
YXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhWaXN1YWxJ
bmZvKiBmb3VuZFZpc3VhbCA9IDA7CisKKyAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpPCBtYXRjaGluZ0NvdW50OyBpKyspIHsKKyAgICAgICAgICAg
IFhWaXN1YWxJbmZvKiB0ZW1wID0gJm1hdGNoaW5nVmlzdWFsc1tpXTsKKworICAgICAgICAgICAg
aWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkgewor
ICAgICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZp
c3VhbEZvcm1hdChtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCB0ZW1wLT52aXN1YWwp
OworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNr
ID4gMCkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZFZpc3VhbCA9IHRlbXA7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHRlbXAtPmRlcHRoID09IDMyKSB7CisgICAgICAgICAgICAgICAgZm91
bmRWaXN1YWwgPSB0ZW1wOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKGNob3NlblZpc3VhbEluZm8tPmRlcHRoID09
IDMyKSB7Ci0gICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZv
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICBpZiAo
IW1fY29uZmlnVmlzdWFsSW5mbykgewotICAgICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0
ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7Ci0gICAgICAgIFhWaXN1YWxJbmZvKiBtYXRjaGlu
Z1Zpc3VhbHM7Ci0gICAgICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKKyAgICAgICAgaWYgKGZv
dW5kVmlzdWFsKQorICAgICAgICAgICAgY3JlYXRlT2ZmU2NyZWVuV2luZG93KGhhbmRsZUlkLCAq
Zm91bmRWaXN1YWwsIHNpemUpOworICAgIH0KK30KKyNlbmRpZgogCi0gICAgICAgIHZpc3VhbElu
Zm9UZW1wbGF0ZS5kZXB0aCA9IGNob3NlblZpc3VhbEluZm8tPmRlcHRoOwotICAgICAgICBtYXRj
aGluZ1Zpc3VhbHMgPSBYR2V0VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxh
eSgpLCBWaXN1YWxEZXB0aE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50
KTsKKyNlbmRpZgogCi0gICAgICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKLSAgICAgICAgICAg
IG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07Ci0gICAgICAgICAgICBY
RnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICB9Cit2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyhjb25zdCB1
aW50MzJfdCB3aW5kb3dJZCkKK3sKKyAgICBpZiAoIXdpbmRvd0lkKQorICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gcmV0cmlldmUgWFZpc3VhbCBJbmZvLiIpOworICAgIERpc3BsYXkqIGRpc3BsYXkgPSBt
X3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOworICAgIGlmICghZGlzcGxheSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIFhEZXN0cm95V2luZG93KGRpc3Bs
YXksIHdpbmRvd0lkKTsKIH0KLSNlbmRpZgogCi12b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6c2V0
VmlzdWFsSW5mbyhYVmlzdWFsSW5mbyogdmlzSW5mbykKK0Rpc3BsYXkqIFgxMU9mZlNjcmVlbldp
bmRvdzo6bmF0aXZlU2hhcmVkRGlzcGxheSgpIGNvbnN0CiB7Ci0gICAgbV9jb25maWdWaXN1YWxJ
bmZvID0gdmlzSW5mbzsKKyAgICByZXR1cm4gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KTsKIH0KIAogYm9vbCBYMTFPZmZTY3JlZW5XaW5kb3c6OmlzWFJlbmRlckV4dGVuc2lvblN1cHBv
cnRlZCgpIGNvbnN0CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuaAppbmRleCBhMzk4NjVk
Li5jYzJkMzNmIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5oCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmgKQEAgLTI5LDEzICsy
OSwxOCBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJPd25QdHJYMTEuaCIKIAotI2luY2x1ZGUgPG9wZW5nbC9HTERl
ZnMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKKworI2lmIFVTRShFR0wpCisjaW5jbHVkZSA8b3BlbmdsL0dMRGVmcy5oPgorI2Vu
ZGlmCisKICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CiAjaW5jbHVkZSA8
WDExL2V4dGVuc2lvbnMvWHJlbmRlci5oPgogI2VuZGlmCkBAIC0xNDMsMTkgKzE0OCwxOSBAQCBj
bGFzcyBYMTFPZmZTY3JlZW5XaW5kb3cgewogcHVibGljOgogICAgIFgxMU9mZlNjcmVlbldpbmRv
dygpOwogICAgIHZpcnR1YWwgflgxMU9mZlNjcmVlbldpbmRvdygpOwotICAgIHZvaWQgY3JlYXRl
T2Zmc2NyZWVuV2luZG93KHVpbnQzMl90Kik7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisg
ICAgdm9pZCBjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqLCBjb25zdCBYVmlzdWFsSW5m
byYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgxLCAxKSk7CisjaWYgVVNFKEVHTCkKKyAgICB2
b2lkIGNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCosIGNvbnN0IEVHTGludCwgY29uc3Qg
SW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKKyNlbmRpZgorI2VuZGlmCiAgICAgdm9pZCBkZXN0
cm95V2luZG93KGNvbnN0IHVpbnQzMl90KTsKICAgICB2b2lkIHJlU2l6ZVdpbmRvdyhjb25zdCBJ
bnRSZWN0JiwgY29uc3QgdWludDMyX3QpOwogICAgIERpc3BsYXkqIG5hdGl2ZVNoYXJlZERpc3Bs
YXkoKSBjb25zdDsKLSNpZiBVU0UoRUdMKQotICAgIGJvb2wgc2V0VmlzdWFsSWQoY29uc3QgRUdM
aW50KTsKLSNlbmRpZgotICAgIHZvaWQgc2V0VmlzdWFsSW5mbyhYVmlzdWFsSW5mbyopOwogICAg
IGJvb2wgaXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFNoYXJlZFgxMVJlc291cmNlcz4gbV9zaGFyZWRSZXNvdXJjZXM7Ci0gICAgWFZp
c3VhbEluZm8qIG1fY29uZmlnVmlzdWFsSW5mbzsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>