<?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>52496</bug_id>
          
          <creation_ts>2011-01-14 16:39:32 -0800</creation_ts>
          <short_desc>Drag and drop support: refactoring of image from link and image from selection</short_desc>
          <delta_ts>2011-01-17 12:12:57 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>adele</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334726</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-14 16:39:32 -0800</bug_when>
    <thetext>The Mac specific code that creates the drag image has some inconsistencies between the way the image is created from a selection and the one created from a link.
Also both call into the NSView directly from the WebCore level.
It would be nice to clean up this code, to avoid using the NSView from WebCore.

This is requirement for WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334748</commentid>
    <comment_count>1</comment_count>
      <attachid>79033</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-14 17:02:02 -0800</bug_when>
    <thetext>Created attachment 79033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334783</commentid>
    <comment_count>2</comment_count>
      <attachid>79033</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-14 17:44:40 -0800</bug_when>
    <thetext>Comment on attachment 79033
Patch

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

Just nit comments since I don&apos;t know Cocoa / Objective-C.

&gt; Source/WebCore/page/mac/FrameMac.mm:281
&gt; +    

Nit: space.

&gt; Source/WebCore/page/mac/FrameMac.mm:284
&gt; +    

Ditt.

&gt; WebKit2/UIProcess/API/mac/WKView.mm:201
&gt; +    //[self _registerDraggedTypes];

Maybe you want to delete this line?

&gt; WebKit2/UIProcess/API/mac/WKView.mm:1018
&gt; +/*
&gt;  - (NSDragOperation)draggingEntered:(id &lt;NSDraggingInfo&gt;)draggingInfo

Ditto.

&gt; WebKit2/UIProcess/API/mac/WKView.mm:1059
&gt; +*/

Ditto.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:64
&gt; +#define DRAG_LABEL_BORDER_Y_OFFSET              2.0f
&gt; +
&gt; +#define MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP        120.0f
&gt; +#define MAX_DRAG_LABEL_WIDTH                    320.0f
&gt; +
&gt; +#define DRAG_LINK_LABEL_FONT_SIZE   11.0f
&gt; +#define DRAG_LINK_URL_FONT_SIZE   10.0f

Maybe nice to align these numbers to above 3 numbers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334786</commentid>
    <comment_count>3</comment_count>
      <attachid>79033</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-14 17:46:09 -0800</bug_when>
    <thetext>Comment on attachment 79033
Patch

r- for now because of your commenting out code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334792</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-14 17:59:19 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79033 [details])
&gt; r- for now because of your commenting out code.

Sorry that code was commented out by mistake. I was testing something and forgot to remove the comments before I prepared the patch. Uploading now the correct patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334800</commentid>
    <comment_count>5</comment_count>
      <attachid>79044</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-14 18:10:46 -0800</bug_when>
    <thetext>Created attachment 79044
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334842</commentid>
    <comment_count>6</comment_count>
      <attachid>79044</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-14 20:37:57 -0800</bug_when>
    <thetext>Comment on attachment 79044
Patch2

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

I don&apos;t really understand why DragClient is a better place for drag image generation, but OK.

&gt; Source/WebCore/page/mac/FrameMac.mm:-265
&gt; +    PaintBehavior oldBehavior = m_view-&gt;paintBehavior();
&gt; +    m_view-&gt;setPaintBehavior(oldBehavior | PaintBehaviorFlattenCompositingLayers);
&gt;      
&gt; -    PaintBehavior oldPaintBehavior = m_view-&gt;paintBehavior();
&gt; -    m_view-&gt;setPaintBehavior(oldPaintBehavior | PaintBehaviorFlattenCompositingLayers);

What&apos;s wrong about &quot;oldPaintBehavior&quot; name? It seems more clear to me.

&gt; Source/WebCore/page/mac/FrameMac.mm:-275
&gt; -    // Round image rect size in window coordinate space to avoid pixel cracks at HiDPI (4622794)
&gt; -    rect = [view convertRect:rect toView:nil];
&gt;      rect.size.height = roundf(rect.size.height);
&gt;      rect.size.width = roundf(rect.size.width);
&gt; -    rect = [view convertRect:rect fromView:nil];

So, this is no longer necessary for 4622794?

&gt; Source/WebCore/page/mac/FrameMac.mm:275
&gt; +        m_view-&gt;paintContents(&amp;graphicsContext, IntRect(rect));

Can m_view be null? I&apos;m asking myself the same question as there&apos;s almost identical code in PrintContext, and it doesn&apos;t check for null - but general Frame code has a lot of null checks for null m_view.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:65
&gt; +#define DRAG_LABEL_BORDER_X                     4.0f
&gt; +//Keep border_y in synch with DragController::LinkDragBorderInset
&gt; +#define DRAG_LABEL_BORDER_Y                     2.0f
&gt; +#define DRAG_LABEL_RADIUS                       5.0f
&gt; +#define DRAG_LABEL_BORDER_Y_OFFSET              2.0f
&gt; +
&gt; +#define MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP        120.0f
&gt; +#define MAX_DRAG_LABEL_WIDTH                    320.0f
&gt; +
&gt; +#define DRAG_LINK_LABEL_FONT_SIZE               11.0f
&gt; +#define DRAG_LINK_URL_FONT_SIZE                 10.0f
&gt; +

We&apos;re now using consts (appropriately named, not in ALL_CAPS) instead of defines. Const values needn&apos;t have &quot;.0f&quot; suffixes.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:165
&gt; +    NSSize imageSize, urlStringSize;

Please don&apos;t declare two variables on one line. In this case, urlStringSize should go inside an if block below.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:177
&gt; +        } else {
&gt; +            imageSize.width = max(labelSize.width + DRAG_LABEL_BORDER_X * 2, urlStringSize.width + DRAG_LABEL_BORDER_X * 2);
&gt; +        }

No braces around single line blocks.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:182
&gt; +    [[NSColor colorWithDeviceRed: 0.7f green: 0.7f blue: 0.7f alpha: 0.8f] set];

I don&apos;t think that we&apos;re putting spaces after semicolons. This style mistake is repeated elsewhere in the moved code.

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:184
&gt; +    // Drag a rectangle with rounded corners/

s/\//./

&gt; WebKit/mac/WebCoreSupport/WebDragClient.mm:186
&gt; +    [path appendBezierPathWithOvalInRect: NSMakeRect(0.0f, 0.0f, DRAG_LABEL_RADIUS * 2.0f, DRAG_LABEL_RADIUS * 2.0f)];

0.0.f -&gt; 0; 2.0f -&gt; 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335364</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-17 09:44:19 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 79044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79044&amp;action=review
&gt; 
&gt; I don&apos;t really understand why DragClient is a better place for drag image generation, but OK.
The best place to have this code would be WebCore and avoid using a platform specific image, but I did not want to make too many changes to this code, since the goal is to support drag and drop.
At least not it is consistent with the Windows implementation.

As fas as all the other comments, I just copied the code from WebHTMLView.mm.
I&apos;ll make the suggested changes. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335437</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-17 12:06:51 -0800</bug_when>
    <thetext> &gt; -    // Round image rect size in window coordinate space to avoid pixel cracks at HiDPI (4622794)
&gt; &gt; -    rect = [view convertRect:rect toView:nil];
&gt; &gt;      rect.size.height = roundf(rect.size.height);
&gt; &gt;      rect.size.width = roundf(rect.size.width);
&gt; &gt; -    rect = [view convertRect:rect fromView:nil];
&gt; 
&gt; So, this is no longer necessary for 4622794?
I spoke with Anders and he confirmed that we changed the way we handle this issue. Therefore I&apos;ll remove the 2 roundf statements as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335440</commentid>
    <comment_count>9</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-01-17 12:12:57 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75963</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79033</attachid>
            <date>2011-01-14 17:02:02 -0800</date>
            <delta_ts>2011-01-14 18:10:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>refactor2.txt</filename>
            <type>text/plain</type>
            <size>18160</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1ODM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMTQgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmltYWdlRnJvbVJlY3QpOgorCiAyMDEx
LTAxLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0J
KHJldmlzaW9uIDc1ODM1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1NSw1MCArMjU1LDM2IEBAIE5TU3RyaW5nKiBGcmFtZTo6bWF0
Y2hMYWJlbHNBZ2FpbnN0RWxlbWUKIAogTlNJbWFnZSogRnJhbWU6OmltYWdlRnJvbVJlY3QoTlNS
ZWN0IHJlY3QpIGNvbnN0CiB7Ci0gICAgTlNWaWV3KiB2aWV3ID0gbV92aWV3LT5kb2N1bWVudFZp
ZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKCFbdmll
dyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRyYXdTaW5nbGVSZWN0OildKQotICAgICAg
ICByZXR1cm4gbmlsOworICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX3ZpZXctPnBh
aW50QmVoYXZpb3IoKTsKKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ig
fCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAgICAKLSAgICBQYWlu
dEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBtX3ZpZXctPnBhaW50QmVoYXZpb3IoKTsKLSAg
ICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIAotICAgIE5TUmVjdCBib3VuZHMgPSBbdmlldyBib3VuZHNdOwotICAgIAot
ICAgIC8vIFJvdW5kIGltYWdlIHJlY3Qgc2l6ZSBpbiB3aW5kb3cgY29vcmRpbmF0ZSBzcGFjZSB0
byBhdm9pZCBwaXhlbCBjcmFja3MgYXQgSGlEUEkgKDQ2MjI3OTQpCi0gICAgcmVjdCA9IFt2aWV3
IGNvbnZlcnRSZWN0OnJlY3QgdG9WaWV3Om5pbF07CiAgICAgcmVjdC5zaXplLmhlaWdodCA9IHJv
dW5kZihyZWN0LnNpemUuaGVpZ2h0KTsKICAgICByZWN0LnNpemUud2lkdGggPSByb3VuZGYocmVj
dC5zaXplLndpZHRoKTsKLSAgICByZWN0ID0gW3ZpZXcgY29udmVydFJlY3Q6cmVjdCBmcm9tVmll
dzpuaWxdOwogICAgIAogICAgIE5TSW1hZ2UqIHJlc3VsdEltYWdlID0gW1tbTlNJbWFnZSBhbGxv
Y10gaW5pdFdpdGhTaXplOnJlY3Quc2l6ZV0gYXV0b3JlbGVhc2VdOwotCisgICAgCiAgICAgaWYg
KHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQgIT0gMCkgewogICAgICAg
ICBbcmVzdWx0SW1hZ2Ugc2V0RmxpcHBlZDpZRVNdOwogICAgICAgICBbcmVzdWx0SW1hZ2UgbG9j
a0ZvY3VzXTsKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0gICAgICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShjb250ZXh0LCBib3VuZHMub3JpZ2luLnggLSByZWN0Lm9yaWdpbi54LCBib3VuZHMub3Jp
Z2luLnkgLSByZWN0Lm9yaWdpbi55KTsKLQotICAgICAgICAvLyBOb3RlOiBNdXN0IG5vdCBjYWxs
IGRyYXdSZWN0OiBoZXJlLCBiZWNhdXNlIGRyYXdSZWN0OiBhc3N1bWVzIHRoYXQgaXQncyBjYWxs
ZWQgZnJvbSBBcHBLaXQncwotICAgICAgICAvLyBkaXNwbGF5IG1hY2hpbmVyeS4gSXQgY2FsbHMg
Z2V0UmVjdHNCZWluZ0RyYXduOmNvdW50Oiwgd2hpY2ggY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lk
ZQotICAgICAgICAvLyB3aGVuIGEgcmVhbCBBcHBLaXQgZGlzcGxheSBpcyB1bmRlcndheS4KLSAg
ICAgICAgW3ZpZXcgZHJhd1NpbmdsZVJlY3Q6cmVjdF07CiAKLSAgICAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dCgoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdy
YXBoaWNzUG9ydF0pOyAgICAgICAgCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXJlY3Qub3JpZ2luLngsIC1yZWN0Lm9y
aWdpbi55KTsKKyAgICAgICAgbV92aWV3LT5wYWludENvbnRlbnRzKCZncmFwaGljc0NvbnRleHQs
IEludFJlY3QocmVjdCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOworCiAg
ICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107CiAgICAgICAgIFtyZXN1bHRJbWFnZSBz
ZXRGbGlwcGVkOk5PXTsKICAgICB9Ci0KLSAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xk
UGFpbnRCZWhhdmlvcik7CisgICAgCisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJl
aGF2aW9yKTsKICAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0KKyAgICAKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogICAgIAotICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQ
YWludEJlaGF2aW9yKTsKKyAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgIHJldHVybiBuaWw7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCShyZXZpc2lvbiA3NTgzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIGNvbnRleAogICAgIF9kYXRhLT5fcGFnZSA9IHRvSW1wbChjb250ZXh0
UmVmKS0+Y3JlYXRlV2ViUGFnZShfZGF0YS0+X3BhZ2VDbGllbnQuZ2V0KCksIHRvSW1wbChwYWdl
R3JvdXBSZWYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAg
ICBbc2VsZiBfcmVnaXN0ZXJEcmFnZ2VkVHlwZXNdOworICAgIC8vW3NlbGYgX3JlZ2lzdGVyRHJh
Z2dlZFR5cGVzXTsKIAogICAgIFdlYkNvbnRleHQ6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsr
OwogCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChEcmFnQXBwbGljYXRpb25GbGFncylhcHBsaWNh
dGlvbkZsYWdzCiAgICAgICAgIGZsYWdzIHw9IERyYWdBcHBsaWNhdGlvbklzQ29weUtleURvd247
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncyk7CiB9
Ci0KKy8qCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIEludFBvaW50IGNsaWVudChbc2VsZiBjb252ZXJ0
UG9pbnQ6W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSBmcm9tVmlldzpuaWxdKTsKQEAg
LTEwNTYsNyArMTA1Niw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0Ry
YWcKICAgICBfZGF0YS0+X3BhZ2UtPnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvblBlcmZvcm1EcmFnLCAmZHJhZ0RhdGEsIFtbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nUGFzdGVib2FyZF0gbmFtZV0pOwogICAgIHJldHVybiBZRVM7CiB9Ci0KKyovCiAtICh2b2lk
KV91cGRhdGVXaW5kb3dWaXNpYmlsaXR5CiB7CiAgICAgX2RhdGEtPl9wYWdlLT51cGRhdGVXaW5k
b3dJc1Zpc2libGUoIVtbc2VsZiB3aW5kb3ddIGlzTWluaWF0dXJpemVkXSk7CkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gNzU4MzUpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDExLTAxLTE0ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJh
ZyBhbmQgZHJvcCBzdXBwb3J0OiByZWZhY3RvcmluZyBvZiBpbWFnZSBmcm9tIGxpbmsgYW5kIGlt
YWdlIGZyb20gc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MjQ5NgorCisgICAgICAgIFRoaXMgd29yayBjbGVhbnMgdXAgdGhlIE1hYyBj
b2RlIGFuZCBtYWtlcyBpdCBtb3JlIHNpbWlsYXIgdG8gdGhlIFdpbmRvd3MgaW1wbGVtZW50YXRp
b24sCisgICAgICAgIGF2b2lkaW5nIHVubmVjZXNzYXJ5IGNhbGxzIGludG8gdGhlIHBsYXRmb3Jt
IHNwZWNpZmljIHZpZXcuCisgICAgICAgIFRoZSByZWZhY3RvcmluZyBpcyBhIG5lY2Vzc2FyeSBz
dGVwIHRvd2FyZHMgdGhlIGNvbXBsZXRlIHN1cHBvcnQgb2YgZHJhZyBhbmQgZHJvcAorICAgICAg
ICBpbiBXZWJLaXQyLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGlu
ayk6IE1vdmVkIGNvZGUgZnJvbSBXZWJIVE1MVmlldy5tbQorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06IFJlbW92ZWQgY3JlYXRlRHJhZ0ltYWdlRm9yTGlua0VsZW1lbnQgYWRuIGNy
ZWF0ZURyYWdJbWFnZUZvclVSTAorICAgICAgICBhbmQgcmVsZXZhbnQgI2RlZmluZXMKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oOiBSZW1vdmVkIHNhbWUgbWV0aG9kcyBm
cm9tIHRoZSBpbnRlcmZhY2UuCisKIDIwMTEtMDEtMTQgIEJldGggRGFraW4gIDxiZGFraW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHJldmlzaW9uIDc1ODM1KQorKysg
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMyArMzIsMTcgQEAKICNpbXBvcnQgIldlYkhUTUxWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYkhUTUxWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgor
I2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TUGFzdGVib2Fy
ZEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlN0cmlu
Z1RydW5jYXRvci5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DbGlwYm9hcmRNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC00Nyw2ICs1MSwxOCBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9Y
ICAgICAgICAgICAgIDQuMGYKKy8vS2VlcCBib3JkZXJfeSBpbiBzeW5jaCB3aXRoIERyYWdDb250
cm9sbGVyOjpMaW5rRHJhZ0JvcmRlckluc2V0CisjZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1kg
ICAgICAgICAgICAgMi4wZgorI2RlZmluZSBEUkFHX0xBQkVMX1JBRElVUyAgICAgICAgICAgICAg
IDUuMGYKKyNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWV9PRkZTRVQgICAgICAgICAgICAgIDIu
MGYKKworI2RlZmluZSBNSU5fRFJBR19MQUJFTF9XSURUSF9CRUZPUkVfQ0xJUCAgICAgICAgMTIw
LjBmCisjZGVmaW5lIE1BWF9EUkFHX0xBQkVMX1dJRFRIICAgICAgICAgICAgICAgICAgICAzMjAu
MGYKKworI2RlZmluZSBEUkFHX0xJTktfTEFCRUxfRk9OVF9TSVpFICAgMTEuMGYKKyNkZWZpbmUg
RFJBR19MSU5LX1VSTF9GT05UX1NJWkUgICAxMC4wZgorCiBXZWJEcmFnQ2xpZW50OjpXZWJEcmFn
Q2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgCiB7CkBA
IC0xMjAsMTUgKzEzNiw4MyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJh
Z0ltCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJIVE1M
VmlldyAqaHRtbFZpZXcgPSAoV2ViSFRNTFZpZXcgKilbW2tpdChmcmFtZSkgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddOworCiAgICAgTlNTdHJpbmcgKmxhYmVsID0gMDsKICAgICBpZiAoIXRpdGxl
LmlzRW1wdHkoKSkKICAgICAgICAgbGFiZWwgPSB0aXRsZTsKICAgICBOU1VSTCAqY29jb2FVUkwg
PSB1cmw7Ci0gICAgcmV0dXJuIFtodG1sVmlldyBfZHJhZ0ltYWdlRm9yVVJMOltjb2NvYVVSTCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nXSB3aXRoTGFiZWw6bGFiZWxdOworICAgIE5TU3RyaW5nICp1
cmxTdHJpbmcgPSBbY29jb2FVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ107CisgICAgCisgICAg
Qk9PTCBkcmF3VVJMU3RyaW5nID0gWUVTOworICAgIEJPT0wgY2xpcFVSTFN0cmluZyA9IE5PLCBj
bGlwTGFiZWxTdHJpbmcgPSBOTzsKKyAgICAKKyAgICBpZiAoIWxhYmVsKSB7CisgICAgICAgIGRy
YXdVUkxTdHJpbmcgPSBOTzsKKyAgICAgICAgbGFiZWwgPSB1cmxTdHJpbmc7CisgICAgfQorICAg
IAorICAgIE5TRm9udCAqbGFiZWxGb250ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5h
Z2VyXSBjb252ZXJ0Rm9udDpbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6RFJBR19MSU5LX0xBQkVM
X0ZPTlRfU0laRV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9IYXZlVHJhaXQ6TlNCb2xkRm9udE1hc2tdOworICAgIE5TRm9udCAq
dXJsRm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpEUkFHX0xJTktfVVJMX0ZPTlRfU0la
RV07CisgICAgTlNTaXplIGxhYmVsU2l6ZTsKKyAgICBsYWJlbFNpemUud2lkdGggPSBbbGFiZWwg
X3dlYl93aWR0aFdpdGhGb250OiBsYWJlbEZvbnRdOworICAgIGxhYmVsU2l6ZS5oZWlnaHQgPSBb
bGFiZWxGb250IGFzY2VuZGVyXSAtIFtsYWJlbEZvbnQgZGVzY2VuZGVyXTsKKyAgICBpZiAobGFi
ZWxTaXplLndpZHRoID4gTUFYX0RSQUdfTEFCRUxfV0lEVEgpeworICAgICAgICBsYWJlbFNpemUu
d2lkdGggPSBNQVhfRFJBR19MQUJFTF9XSURUSDsKKyAgICAgICAgY2xpcExhYmVsU3RyaW5nID0g
WUVTOworICAgIH0KKyAgICAKKyAgICBOU1NpemUgaW1hZ2VTaXplLCB1cmxTdHJpbmdTaXplOwor
ICAgIGltYWdlU2l6ZS53aWR0aCA9IGxhYmVsU2l6ZS53aWR0aCArIERSQUdfTEFCRUxfQk9SREVS
X1ggKiAyLjBmOworICAgIGltYWdlU2l6ZS5oZWlnaHQgPSBsYWJlbFNpemUuaGVpZ2h0ICsgRFJB
R19MQUJFTF9CT1JERVJfWSAqIDIuMGY7CisgICAgaWYgKGRyYXdVUkxTdHJpbmcpIHsKKyAgICAg
ICAgdXJsU3RyaW5nU2l6ZS53aWR0aCA9IFt1cmxTdHJpbmcgX3dlYl93aWR0aFdpdGhGb250OiB1
cmxGb250XTsKKyAgICAgICAgdXJsU3RyaW5nU2l6ZS5oZWlnaHQgPSBbdXJsRm9udCBhc2NlbmRl
cl0gLSBbdXJsRm9udCBkZXNjZW5kZXJdOworICAgICAgICBpbWFnZVNpemUuaGVpZ2h0ICs9IHVy
bFN0cmluZ1NpemUuaGVpZ2h0OworICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCA+IE1B
WF9EUkFHX0xBQkVMX1dJRFRIKSB7CisgICAgICAgICAgICBpbWFnZVNpemUud2lkdGggPSBtYXgo
TUFYX0RSQUdfTEFCRUxfV0lEVEggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwgTUlOX0RSQUdf
TEFCRUxfV0lEVEhfQkVGT1JFX0NMSVApOworICAgICAgICAgICAgY2xpcFVSTFN0cmluZyA9IFlF
UzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9IG1heChs
YWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwgdXJsU3RyaW5nU2l6ZS53
aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1ggKiAyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBO
U0ltYWdlICpkcmFnSW1hZ2UgPSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6IGltYWdl
U2l6ZV0gYXV0b3JlbGVhc2VdOworICAgIFtkcmFnSW1hZ2UgbG9ja0ZvY3VzXTsKKyAgICAKKyAg
ICBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOiAwLjdmIGdyZWVuOiAwLjdmIGJsdWU6IDAu
N2YgYWxwaGE6IDAuOGZdIHNldF07CisgICAgCisgICAgLy8gRHJhZyBhIHJlY3RhbmdsZSB3aXRo
IHJvdW5kZWQgY29ybmVycy8KKyAgICBOU0JlemllclBhdGggKnBhdGggPSBbTlNCZXppZXJQYXRo
IGJlemllclBhdGhdOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDog
TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFC
RUxfUkFESVVTICogMi4wZildOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbElu
UmVjdDogTlNNYWtlUmVjdCgwLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9SQURJVVMg
KiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4w
ZildOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNNYWtlUmVj
dChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIGltYWdlU2l6ZS5o
ZWlnaHQgLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4w
ZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07CisgICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0
aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53aWR0aCAtIERSQUdfTEFCRUxf
UkFESVVTICogMi4wZiwgMC4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVM
X1JBRElVUyAqIDIuMGYpXTsKKyAgICAKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJl
Y3Q6IE5TTWFrZVJlY3QoRFJBR19MQUJFTF9SQURJVVMsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCAt
IERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgaW1hZ2VTaXplLmhlaWdodCldOworICAgIFtwYXRo
IGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdCgwLjBmLCBEUkFHX0xBQkVMX1JB
RElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAxMC4wZiwgaW1hZ2VTaXplLmhlaWdodCAtIDIuMGYg
KiBEUkFHX0xBQkVMX1JBRElVUyldOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVj
dDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAtIDIwLjBm
LCBEUkFHX0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAyMC4wZiwgaW1hZ2VTaXpl
LmhlaWdodCAtIDIuMGYgKiBEUkFHX0xBQkVMX1JBRElVUyldOworICAgIFtwYXRoIGZpbGxdOwor
ICAgIAorICAgIE5TQ29sb3IgKnRvcENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hp
dGU6MC4wZiBhbHBoYTowLjc1Zl07CisgICAgTlNDb2xvciAqYm90dG9tQ29sb3IgPSBbTlNDb2xv
ciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxLjBmIGFscGhhOjAuNWZdOworICAgIGlmIChkcmF3VVJM
U3RyaW5nKSB7CisgICAgICAgIGlmIChjbGlwVVJMU3RyaW5nKQorICAgICAgICAgICAgdXJsU3Ry
aW5nID0gW1dlYlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzogdXJsU3RyaW5n
IHRvV2lkdGg6aW1hZ2VTaXplLndpZHRoIC0gKERSQUdfTEFCRUxfQk9SREVSX1ggKiAyLjBmKSB3
aXRoRm9udDp1cmxGb250XTsKKyAgICAgICAgCisgICAgICAgIFt1cmxTdHJpbmcgX3dlYl9kcmF3
RG91YmxlZEF0UG9pbnQ6TlNNYWtlUG9pbnQoRFJBR19MQUJFTF9CT1JERVJfWCwgRFJBR19MQUJF
TF9CT1JERVJfWSAtIFt1cmxGb250IGRlc2NlbmRlcl0pIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2l0aFRvcENvbG9yOnRvcENvbG9yIGJvdHRvbUNvbG9yOmJvdHRvbUNvbG9yIGZv
bnQ6dXJsRm9udF07CisgICAgfQorICAgIAorICAgIGlmIChjbGlwTGFiZWxTdHJpbmcpCisgICAg
ICAgIGxhYmVsID0gW1dlYlN0cmluZ1RydW5jYXRvciByaWdodFRydW5jYXRlU3RyaW5nOiBsYWJl
bCB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAtIChEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZikg
d2l0aEZvbnQ6bGFiZWxGb250XTsKKyAgICBbbGFiZWwgX3dlYl9kcmF3RG91YmxlZEF0UG9pbnQ6
TlNNYWtlUG9pbnQgKERSQUdfTEFCRUxfQk9SREVSX1gsIGltYWdlU2l6ZS5oZWlnaHQgLSBEUkFH
X0xBQkVMX0JPUkRFUl9ZX09GRlNFVCAtIFtsYWJlbEZvbnQgcG9pbnRTaXplXSkKKyAgICAgICAg
ICAgICAgICAgICAgICB3aXRoVG9wQ29sb3I6dG9wQ29sb3IgYm90dG9tQ29sb3I6Ym90dG9tQ29s
b3IgZm9udDpsYWJlbEZvbnRdOworICAgIAorICAgIFtkcmFnSW1hZ2UgdW5sb2NrRm9jdXNdOwor
ICAgIAorICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9CiAKLQogdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBET01FbGVt
ZW50KiBlbGVtZW50LCBOU1VSTCogVVJMLCBOU1N0cmluZyogdGl0bGUsIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSkgCiB7CiAgICAgQVNTRVJUKHBhc3RlYm9hcmQpOwpJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQkocmV2aXNpb24gNzU4MzUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAKICNpbXBvcnQgIldl
YlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBv
cnQgIldlYlJlc291cmNlUHJpdmF0ZS5oIgotI2ltcG9ydCAiV2ViU3RyaW5nVHJ1bmNhdG9yLmgi
CiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlR5
cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCkBAIC0zNTgs
MTggKzM1Nyw2IEBAIGNvbnN0IGZsb2F0IF9XZWJIVE1MVmlld1ByaW50aW5nTWF4aW11bVMKIAog
I2RlZmluZSBBVVRPU0NST0xMX0lOVEVSVkFMICAgICAgICAgICAgIDAuMWYKIAotI2RlZmluZSBE
UkFHX0xBQkVMX0JPUkRFUl9YICAgICAgICAgICAgIDQuMGYKLS8vS2VlcCBib3JkZXJfeSBpbiBz
eW5jaCB3aXRoIERyYWdDb250cm9sbGVyOjpMaW5rRHJhZ0JvcmRlckluc2V0Ci0jZGVmaW5lIERS
QUdfTEFCRUxfQk9SREVSX1kgICAgICAgICAgICAgMi4wZgotI2RlZmluZSBEUkFHX0xBQkVMX1JB
RElVUyAgICAgICAgICAgICAgIDUuMGYKLSNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWV9PRkZT
RVQgICAgICAgICAgICAgIDIuMGYKLQotI2RlZmluZSBNSU5fRFJBR19MQUJFTF9XSURUSF9CRUZP
UkVfQ0xJUCAgICAgICAgMTIwLjBmCi0jZGVmaW5lIE1BWF9EUkFHX0xBQkVMX1dJRFRIICAgICAg
ICAgICAgICAgICAgICAzMjAuMGYKLQotI2RlZmluZSBEUkFHX0xJTktfTEFCRUxfRk9OVF9TSVpF
ICAgMTEuMGYKLSNkZWZpbmUgRFJBR19MSU5LX1VSTF9GT05UX1NJWkUgICAxMC4wZgotCiAvLyBB
bnkgbm9uLXplcm8gdmFsdWUgd2lsbCBkbywgYnV0IHVzaW5nIHNvbWV0aGluZyByZWNvZ25pemFi
bGUgbWlnaHQgaGVscCB1cyBkZWJ1ZyBzb21lIGRheS4KICNkZWZpbmUgVFJBQ0tJTkdfUkVDVF9U
QUcgMHhCQURGQUNFCiAKQEAgLTE3MzcsODcgKzE3MjQsNiBAQCArIChOU0FycmF5ICopX3NlbGVj
dGlvblBhc3RlYm9hcmRUeXBlcwogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU1JURkRQYm9hcmRUeXBlLCBOU1JURlBib2FyZFR5cGUs
IE5TU3RyaW5nUGJvYXJkVHlwZSwgbmlsXTsKIH0KIAotLSAoTlNJbWFnZSAqKV9kcmFnSW1hZ2VG
b3JVUkw6KE5TU3RyaW5nKil1cmxTdHJpbmcgd2l0aExhYmVsOihOU1N0cmluZyopbGFiZWwKLXsK
LSAgICBCT09MIGRyYXdVUkxTdHJpbmcgPSBZRVM7Ci0gICAgQk9PTCBjbGlwVVJMU3RyaW5nID0g
Tk8sIGNsaXBMYWJlbFN0cmluZyA9IE5POwotICAgIAotICAgIGlmICghbGFiZWwpIHsKLSAgICAg
ICAgZHJhd1VSTFN0cmluZyA9IE5POwotICAgICAgICBsYWJlbCA9IHVybFN0cmluZzsKLSAgICB9
Ci0gICAgCi0gICAgTlNGb250ICpsYWJlbEZvbnQgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9u
dE1hbmFnZXJdIGNvbnZlcnRGb250OltOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpEUkFHX0xJTktf
TEFCRUxfRk9OVF9TSVpFXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0b0hhdmVUcmFpdDpOU0JvbGRGb250TWFza107Ci0gICAgTlNG
b250ICp1cmxGb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOiBEUkFHX0xJTktfVVJMX0ZP
TlRfU0laRV07Ci0gICAgTlNTaXplIGxhYmVsU2l6ZTsKLSAgICBsYWJlbFNpemUud2lkdGggPSBb
bGFiZWwgX3dlYl93aWR0aFdpdGhGb250OiBsYWJlbEZvbnRdOwotICAgIGxhYmVsU2l6ZS5oZWln
aHQgPSBbbGFiZWxGb250IGFzY2VuZGVyXSAtIFtsYWJlbEZvbnQgZGVzY2VuZGVyXTsKLSAgICBp
ZiAobGFiZWxTaXplLndpZHRoID4gTUFYX0RSQUdfTEFCRUxfV0lEVEgpewotICAgICAgICBsYWJl
bFNpemUud2lkdGggPSBNQVhfRFJBR19MQUJFTF9XSURUSDsKLSAgICAgICAgY2xpcExhYmVsU3Ry
aW5nID0gWUVTOwotICAgIH0KLSAgICAKLSAgICBOU1NpemUgaW1hZ2VTaXplLCB1cmxTdHJpbmdT
aXplOwotICAgIGltYWdlU2l6ZS53aWR0aCA9IGxhYmVsU2l6ZS53aWR0aCArIERSQUdfTEFCRUxf
Qk9SREVSX1ggKiAyLjBmOwotICAgIGltYWdlU2l6ZS5oZWlnaHQgPSBsYWJlbFNpemUuaGVpZ2h0
ICsgRFJBR19MQUJFTF9CT1JERVJfWSAqIDIuMGY7Ci0gICAgaWYgKGRyYXdVUkxTdHJpbmcpIHsK
LSAgICAgICAgdXJsU3RyaW5nU2l6ZS53aWR0aCA9IFt1cmxTdHJpbmcgX3dlYl93aWR0aFdpdGhG
b250OiB1cmxGb250XTsKLSAgICAgICAgdXJsU3RyaW5nU2l6ZS5oZWlnaHQgPSBbdXJsRm9udCBh
c2NlbmRlcl0gLSBbdXJsRm9udCBkZXNjZW5kZXJdOwotICAgICAgICBpbWFnZVNpemUuaGVpZ2h0
ICs9IHVybFN0cmluZ1NpemUuaGVpZ2h0OwotICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0
aCA+IE1BWF9EUkFHX0xBQkVMX1dJRFRIKSB7Ci0gICAgICAgICAgICBpbWFnZVNpemUud2lkdGgg
PSBtYXgoTUFYX0RSQUdfTEFCRUxfV0lEVEggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwgTUlO
X0RSQUdfTEFCRUxfV0lEVEhfQkVGT1JFX0NMSVApOwotICAgICAgICAgICAgY2xpcFVSTFN0cmlu
ZyA9IFlFUzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9
IG1heChsYWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMiwgdXJsU3RyaW5n
U2l6ZS53aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1ggKiAyKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6
IGltYWdlU2l6ZV0gYXV0b3JlbGVhc2VdOwotICAgIFtkcmFnSW1hZ2UgbG9ja0ZvY3VzXTsKLSAg
ICAKLSAgICBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOiAwLjdmIGdyZWVuOiAwLjdmIGJs
dWU6IDAuN2YgYWxwaGE6IDAuOGZdIHNldF07Ci0gICAgCi0gICAgLy8gRHJhZyBhIHJlY3Rhbmds
ZSB3aXRoIHJvdW5kZWQgY29ybmVycy8KLSAgICBOU0JlemllclBhdGggKnBhdGggPSBbTlNCZXpp
ZXJQYXRoIGJlemllclBhdGhdOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbElu
UmVjdDogTlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERS
QUdfTEFCRUxfUkFESVVTICogMi4wZildOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRo
T3ZhbEluUmVjdDogTlNNYWtlUmVjdCgwLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9S
QURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVT
ICogMi4wZildOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNN
YWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIGltYWdl
U2l6ZS5oZWlnaHQgLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVT
ICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07Ci0gICAgW3BhdGggYXBwZW5kQmV6
aWVyUGF0aFdpdGhPdmFsSW5SZWN0OiBOU01ha2VSZWN0KGltYWdlU2l6ZS53aWR0aCAtIERSQUdf
TEFCRUxfUkFESVVTICogMi4wZiwgMC4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFH
X0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKLSAgICAKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRo
V2l0aFJlY3Q6IE5TTWFrZVJlY3QoRFJBR19MQUJFTF9SQURJVVMsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgaW1hZ2VTaXplLmhlaWdodCldOwotICAg
IFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoUmVjdDogTlNNYWtlUmVjdCgwLjBmLCBEUkFHX0xB
QkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAxMC4wZiwgaW1hZ2VTaXplLmhlaWdodCAt
IDIuMGYgKiBEUkFHX0xBQkVMX1JBRElVUyldOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhX
aXRoUmVjdDogTlNNYWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAt
IDIwLjBmLCBEUkFHX0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMgKyAyMC4wZiwgaW1h
Z2VTaXplLmhlaWdodCAtIDIuMGYgKiBEUkFHX0xBQkVMX1JBRElVUyldOwotICAgIFtwYXRoIGZp
bGxdOwotICAgIAotICAgIE5TQ29sb3IgKnRvcENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2
aWNlV2hpdGU6MC4wZiBhbHBoYTowLjc1Zl07Ci0gICAgTlNDb2xvciAqYm90dG9tQ29sb3IgPSBb
TlNDb2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxLjBmIGFscGhhOjAuNWZdOwotICAgIGlmIChk
cmF3VVJMU3RyaW5nKSB7Ci0gICAgICAgIGlmIChjbGlwVVJMU3RyaW5nKQotICAgICAgICAgICAg
dXJsU3RyaW5nID0gW1dlYlN0cmluZ1RydW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzogdXJs
U3RyaW5nIHRvV2lkdGg6aW1hZ2VTaXplLndpZHRoIC0gKERSQUdfTEFCRUxfQk9SREVSX1ggKiAy
LjBmKSB3aXRoRm9udDp1cmxGb250XTsKLSAgICAgICAgCi0gICAgICAgIFt1cmxTdHJpbmcgX3dl
Yl9kcmF3RG91YmxlZEF0UG9pbnQ6TlNNYWtlUG9pbnQoRFJBR19MQUJFTF9CT1JERVJfWCwgRFJB
R19MQUJFTF9CT1JERVJfWSAtIFt1cmxGb250IGRlc2NlbmRlcl0pIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aFRvcENvbG9yOnRvcENvbG9yIGJvdHRvbUNvbG9yOmJvdHRvbUNv
bG9yIGZvbnQ6dXJsRm9udF07Ci0gICAgfQotICAgIAotICAgIGlmIChjbGlwTGFiZWxTdHJpbmcp
Ci0gICAgICAgIGxhYmVsID0gW1dlYlN0cmluZ1RydW5jYXRvciByaWdodFRydW5jYXRlU3RyaW5n
OiBsYWJlbCB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAtIChEUkFHX0xBQkVMX0JPUkRFUl9YICog
Mi4wZikgd2l0aEZvbnQ6bGFiZWxGb250XTsKLSAgICBbbGFiZWwgX3dlYl9kcmF3RG91YmxlZEF0
UG9pbnQ6TlNNYWtlUG9pbnQgKERSQUdfTEFCRUxfQk9SREVSX1gsIGltYWdlU2l6ZS5oZWlnaHQg
LSBEUkFHX0xBQkVMX0JPUkRFUl9ZX09GRlNFVCAtIFtsYWJlbEZvbnQgcG9pbnRTaXplXSkKLSAg
ICAgICAgICAgICAgICAgICAgICB3aXRoVG9wQ29sb3I6dG9wQ29sb3IgYm90dG9tQ29sb3I6Ym90
dG9tQ29sb3IgZm9udDpsYWJlbEZvbnRdOwotICAgIAotICAgIFtkcmFnSW1hZ2UgdW5sb2NrRm9j
dXNdOwotICAgIAotICAgIHJldHVybiBkcmFnSW1hZ2U7Ci19Ci0KLS0gKE5TSW1hZ2UgKilfZHJh
Z0ltYWdlRm9yTGlua0VsZW1lbnQ6KE5TRGljdGlvbmFyeSAqKWVsZW1lbnQKLXsKLSAgICBOU1VS
TCAqbGlua1VSTCA9IFtlbGVtZW50IG9iamVjdEZvcktleTogV2ViRWxlbWVudExpbmtVUkxLZXld
OwotICAgIAotICAgIE5TU3RyaW5nICpsYWJlbCA9IFtlbGVtZW50IG9iamVjdEZvcktleTogV2Vi
RWxlbWVudExpbmtMYWJlbEtleV07Ci0gICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IFtsaW5rVVJM
IF93ZWJfdXNlclZpc2libGVTdHJpbmddOwotICAgIHJldHVybiBbc2VsZiBfZHJhZ0ltYWdlRm9y
VVJMOnVybFN0cmluZyB3aXRoTGFiZWw6bGFiZWxdOwotfQotCiAtICh2b2lkKXBhc3RlYm9hcmRD
aGFuZ2VkT3duZXI6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKIHsKICAgICBbc2VsZiBzZXRQ
cm9taXNlZERyYWdUSUZGRGF0YVNvdXJjZTowXTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDc1ODM1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3Nyw2IEBAIEBp
bnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYlByaXZhdGUpCiAKIC0gKHZvaWQpX2ZyYW1lT3JCb3Vu
ZHNDaGFuZ2VkOwogCi0tIChOU0ltYWdlICopX2RyYWdJbWFnZUZvckxpbmtFbGVtZW50OihOU0Rp
Y3Rpb25hcnkgKillbGVtZW50OwotLSAoTlNJbWFnZSAqKV9kcmFnSW1hZ2VGb3JVUkw6KE5TU3Ry
aW5nKilsaW5rVVJMIHdpdGhMYWJlbDooTlNTdHJpbmcqKWxhYmVsOwogLSAodm9pZClfaGFuZGxl
QXV0b3Njcm9sbEZvck1vdXNlRHJhZ2dlZDooTlNFdmVudCAqKWV2ZW50OwogLSAoV2ViUGx1Z2lu
Q29udHJvbGxlciAqKV9wbHVnaW5Db250cm9sbGVyOwogCg==
</data>
<flag name="review"
          id="70419"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79044</attachid>
            <date>2011-01-14 18:10:46 -0800</date>
            <delta_ts>2011-01-14 20:37:57 -0800</delta_ts>
            <desc>Patch2</desc>
            <filename>refactor2.txt</filename>
            <type>text/plain</type>
            <size>17393</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1ODYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDEtMTQgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBEcmFnIGFuZCBkcm9wIHN1cHBvcnQ6IHJlZmFjdG9yaW5nIG9m
IGltYWdlIGZyb20gbGluayBhbmQgaW1hZ2UgZnJvbSBzZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDk2CisKKyAgICAgICAgVGhpcyB3
b3JrIGNsZWFucyB1cCB0aGUgTWFjIGNvZGUgYW5kIG1ha2VzIGl0IG1vcmUgc2ltaWxhciB0byB0
aGUgV2luZG93cyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAgYXZvaWRpbmcgdGhlIHVzZSBvZiBh
biBOU1ZpZXcgd2hlbiB0aGUgRnJhbWVWaWV3IGNhbiBiZSB1c2VkLgorICAgICAgICBUaGUgcmVm
YWN0b3JpbmcgaXMgYSBuZWNlc3Nhcnkgc3RlcCB0b3dhcmRzIHRoZSBjb21wbGV0ZSBzdXBwb3J0
IG9mIGRyYWcgYW5kIGRyb3AKKyAgICAgICAgaW4gV2ViS2l0Mi4KKyAgICAgICAgCisgICAgICAg
ICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW1hZ2VG
cm9tUmVjdCk6IE1vZGlmaWVkIHRvIHVzZSBGcmFtZVZpZXcgaW5zdGVhZCBvZiBOU1ZpZXcKKyAg
ICAgICAgdG8gZ2VuZXJhdGUgdGhlIGltYWdlIGZvciBkcmFnLgorCiAyMDExLTAxLTE0ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCShyZXZp
c2lvbiA3NTg0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTUsNTAgKzI1NSwzNiBAQCBOU1N0cmluZyogRnJhbWU6Om1hdGNoTGFi
ZWxzQWdhaW5zdEVsZW1lCiAKIE5TSW1hZ2UqIEZyYW1lOjppbWFnZUZyb21SZWN0KE5TUmVjdCBy
ZWN0KSBjb25zdAogewotICAgIE5TVmlldyogdmlldyA9IG1fdmlldy0+ZG9jdW1lbnRWaWV3KCk7
Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmICghW3ZpZXcgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkcmF3U2luZ2xlUmVjdDopXSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gbV92aWV3LT5wYWludEJl
aGF2aW9yKCk7CisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgCi0gICAgUGFpbnRCZWhh
dmlvciBvbGRQYWludEJlaGF2aW9yID0gbV92aWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgbV92
aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICAKLSAgICBOU1JlY3QgYm91bmRzID0gW3ZpZXcgYm91bmRzXTsKLSAgICAKLSAgICAv
LyBSb3VuZCBpbWFnZSByZWN0IHNpemUgaW4gd2luZG93IGNvb3JkaW5hdGUgc3BhY2UgdG8gYXZv
aWQgcGl4ZWwgY3JhY2tzIGF0IEhpRFBJICg0NjIyNzk0KQotICAgIHJlY3QgPSBbdmlldyBjb252
ZXJ0UmVjdDpyZWN0IHRvVmlldzpuaWxdOwogICAgIHJlY3Quc2l6ZS5oZWlnaHQgPSByb3VuZGYo
cmVjdC5zaXplLmhlaWdodCk7CiAgICAgcmVjdC5zaXplLndpZHRoID0gcm91bmRmKHJlY3Quc2l6
ZS53aWR0aCk7Ci0gICAgcmVjdCA9IFt2aWV3IGNvbnZlcnRSZWN0OnJlY3QgZnJvbVZpZXc6bmls
XTsKICAgICAKICAgICBOU0ltYWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoU2l6ZTpyZWN0LnNpemVdIGF1dG9yZWxlYXNlXTsKLQorICAgIAogICAgIGlmIChyZWN0
LnNpemUud2lkdGggIT0gMCAmJiByZWN0LnNpemUuaGVpZ2h0ICE9IDApIHsKICAgICAgICAgW3Jl
c3VsdEltYWdlIHNldEZsaXBwZWQ6WUVTXTsKICAgICAgICAgW3Jlc3VsdEltYWdlIGxvY2tGb2N1
c107Ci0gICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gKENHQ29udGV4dFJlZilbW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwotICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Y29udGV4dCwgYm91bmRzLm9yaWdpbi54IC0gcmVjdC5vcmlnaW4ueCwgYm91bmRzLm9yaWdpbi55
IC0gcmVjdC5vcmlnaW4ueSk7Ci0KLSAgICAgICAgLy8gTm90ZTogTXVzdCBub3QgY2FsbCBkcmF3
UmVjdDogaGVyZSwgYmVjYXVzZSBkcmF3UmVjdDogYXNzdW1lcyB0aGF0IGl0J3MgY2FsbGVkIGZy
b20gQXBwS2l0J3MKLSAgICAgICAgLy8gZGlzcGxheSBtYWNoaW5lcnkuIEl0IGNhbGxzIGdldFJl
Y3RzQmVpbmdEcmF3bjpjb3VudDosIHdoaWNoIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUKLSAg
ICAgICAgLy8gd2hlbiBhIHJlYWwgQXBwS2l0IGRpc3BsYXkgaXMgdW5kZXJ3YXkuCi0gICAgICAg
IFt2aWV3IGRyYXdTaW5nbGVSZWN0OnJlY3RdOwogCi0gICAgICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQo
KENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGlj
c1BvcnRdKTsgICAgICAgIAorICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4u
eSk7CisgICAgICAgIG1fdmlldy0+cGFpbnRDb250ZW50cygmZ3JhcGhpY3NDb250ZXh0LCBJbnRS
ZWN0KHJlY3QpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKKwogICAgICAg
ICBbcmVzdWx0SW1hZ2UgdW5sb2NrRm9jdXNdOwogICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0Rmxp
cHBlZDpOT107CiAgICAgfQotCi0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50
QmVoYXZpb3IpOworICAgIAorICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlv
cik7CiAgICAgcmV0dXJuIHJlc3VsdEltYWdlOwotCisgICAgCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKICAgICAKLSAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CisgICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKICAg
ICByZXR1cm4gbmlsOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzU4NjApCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTAxLTE0ICBF
bnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyBhbmQgZHJvcCBzdXBwb3J0OiByZWZhY3Rv
cmluZyBvZiBpbWFnZSBmcm9tIGxpbmsgYW5kIGltYWdlIGZyb20gc2VsZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ5NgorCisgICAgICAg
IFRoaXMgd29yayBjbGVhbnMgdXAgdGhlIE1hYyBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIHNpbWls
YXIgdG8gdGhlIFdpbmRvd3MgaW1wbGVtZW50YXRpb24sCisgICAgICAgIGF2b2lkaW5nIHVubmVj
ZXNzYXJ5IGNhbGxzIGludG8gdGhlIHBsYXRmb3JtIHNwZWNpZmljIHZpZXcuCisgICAgICAgIFRo
ZSByZWZhY3RvcmluZyBpcyBhIG5lY2Vzc2FyeSBzdGVwIHRvd2FyZHMgdGhlIGNvbXBsZXRlIHN1
cHBvcnQgb2YgZHJhZyBhbmQgZHJvcAorICAgICAgICBpbiBXZWJLaXQyLgorICAgICAgICAKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRHJh
Z0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6IE1vdmVkIGNvZGUgZnJvbSBXZWJIVE1M
Vmlldy5tbQorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06IFJlbW92ZWQgY3JlYXRl
RHJhZ0ltYWdlRm9yTGlua0VsZW1lbnQgYWRuIGNyZWF0ZURyYWdJbWFnZUZvclVSTAorICAgICAg
ICBhbmQgcmVsZXZhbnQgI2RlZmluZXMKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3UHJp
dmF0ZS5oOiBSZW1vdmVkIHNhbWUgbWV0aG9kcyBmcm9tIHRoZSBpbnRlcmZhY2UuCisKIDIwMTEt
MDEtMTQgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5tbQkocmV2aXNpb24gNzU4NDcpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNyBA
QAogI2ltcG9ydCAiV2ViSFRNTFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSFRNTFZpZXdQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJLaXROU1N0
cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiV2ViU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1w
b3J0ICJXZWJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgog
I2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NsaXBib2FyZE1h
Yy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZVZpZXcuaD4KQEAgLTQ3LDYgKzUxLDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCisjZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1ggICAgICAgICAgICAgICAgICAg
ICA0LjBmCisvL0tlZXAgYm9yZGVyX3kgaW4gc3luY2ggd2l0aCBEcmFnQ29udHJvbGxlcjo6TGlu
a0RyYWdCb3JkZXJJbnNldAorI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9ZICAgICAgICAgICAg
ICAgICAgICAgMi4wZgorI2RlZmluZSBEUkFHX0xBQkVMX1JBRElVUyAgICAgICAgICAgICAgICAg
ICAgICAgNS4wZgorI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9ZX09GRlNFVCAgICAgICAgICAg
ICAgMi4wZgorCisjZGVmaW5lIE1JTl9EUkFHX0xBQkVMX1dJRFRIX0JFRk9SRV9DTElQICAgICAg
ICAxMjAuMGYKKyNkZWZpbmUgTUFYX0RSQUdfTEFCRUxfV0lEVEggICAgICAgICAgICAgICAgICAg
IDMyMC4wZgorCisjZGVmaW5lIERSQUdfTElOS19MQUJFTF9GT05UX1NJWkUgICAgICAgICAgICAg
ICAxMS4wZgorI2RlZmluZSBEUkFHX0xJTktfVVJMX0ZPTlRfU0laRSAgICAgICAgICAgICAgICAg
MTAuMGYKKwogV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpIAogewpAQCAtMTIwLDE1ICsxMzYsODMgQEAgRHJhZ0lt
YWdlUmVmIFdlYkRyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbQogewogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgV2ViSFRNTFZpZXcgKmh0bWxWaWV3ID0gKFdlYkhUTUxW
aWV3ICopW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKwogICAgIE5TU3Ry
aW5nICpsYWJlbCA9IDA7CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgIGxhYmVs
ID0gdGl0bGU7CiAgICAgTlNVUkwgKmNvY29hVVJMID0gdXJsOwotICAgIHJldHVybiBbaHRtbFZp
ZXcgX2RyYWdJbWFnZUZvclVSTDpbY29jb2FVUkwgX3dlYl91c2VyVmlzaWJsZVN0cmluZ10gd2l0
aExhYmVsOmxhYmVsXTsKKyAgICBOU1N0cmluZyAqdXJsU3RyaW5nID0gW2NvY29hVVJMIF93ZWJf
dXNlclZpc2libGVTdHJpbmddOworICAgIAorICAgIEJPT0wgZHJhd1VSTFN0cmluZyA9IFlFUzsK
KyAgICBCT09MIGNsaXBVUkxTdHJpbmcgPSBOTywgY2xpcExhYmVsU3RyaW5nID0gTk87CisgICAg
CisgICAgaWYgKCFsYWJlbCkgeworICAgICAgICBkcmF3VVJMU3RyaW5nID0gTk87CisgICAgICAg
IGxhYmVsID0gdXJsU3RyaW5nOworICAgIH0KKyAgICAKKyAgICBOU0ZvbnQgKmxhYmVsRm9udCA9
IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gY29udmVydEZvbnQ6W05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOkRSQUdfTElOS19MQUJFTF9GT05UX1NJWkVdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSGF2ZVRyYWl0
Ok5TQm9sZEZvbnRNYXNrXTsKKyAgICBOU0ZvbnQgKnVybEZvbnQgPSBbTlNGb250IHN5c3RlbUZv
bnRPZlNpemU6RFJBR19MSU5LX1VSTF9GT05UX1NJWkVdOworICAgIE5TU2l6ZSBsYWJlbFNpemU7
CisgICAgbGFiZWxTaXplLndpZHRoID0gW2xhYmVsIF93ZWJfd2lkdGhXaXRoRm9udDogbGFiZWxG
b250XTsKKyAgICBsYWJlbFNpemUuaGVpZ2h0ID0gW2xhYmVsRm9udCBhc2NlbmRlcl0gLSBbbGFi
ZWxGb250IGRlc2NlbmRlcl07CisgICAgaWYgKGxhYmVsU2l6ZS53aWR0aCA+IE1BWF9EUkFHX0xB
QkVMX1dJRFRIKXsKKyAgICAgICAgbGFiZWxTaXplLndpZHRoID0gTUFYX0RSQUdfTEFCRUxfV0lE
VEg7CisgICAgICAgIGNsaXBMYWJlbFN0cmluZyA9IFlFUzsKKyAgICB9CisgICAgCisgICAgTlNT
aXplIGltYWdlU2l6ZSwgdXJsU3RyaW5nU2l6ZTsKKyAgICBpbWFnZVNpemUud2lkdGggPSBsYWJl
bFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZjsKKyAgICBpbWFnZVNpemUu
aGVpZ2h0ID0gbGFiZWxTaXplLmhlaWdodCArIERSQUdfTEFCRUxfQk9SREVSX1kgKiAyLjBmOwor
ICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CisgICAgICAgIHVybFN0cmluZ1NpemUud2lkdGggPSBb
dXJsU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDogdXJsRm9udF07CisgICAgICAgIHVybFN0cmlu
Z1NpemUuaGVpZ2h0ID0gW3VybEZvbnQgYXNjZW5kZXJdIC0gW3VybEZvbnQgZGVzY2VuZGVyXTsK
KyAgICAgICAgaW1hZ2VTaXplLmhlaWdodCArPSB1cmxTdHJpbmdTaXplLmhlaWdodDsKKyAgICAg
ICAgaWYgKHVybFN0cmluZ1NpemUud2lkdGggPiBNQVhfRFJBR19MQUJFTF9XSURUSCkgeworICAg
ICAgICAgICAgaW1hZ2VTaXplLndpZHRoID0gbWF4KE1BWF9EUkFHX0xBQkVMX1dJRFRIICsgRFJB
R19MQUJFTF9CT1JERVJfWCAqIDIsIE1JTl9EUkFHX0xBQkVMX1dJRFRIX0JFRk9SRV9DTElQKTsK
KyAgICAgICAgICAgIGNsaXBVUkxTdHJpbmcgPSBZRVM7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpbWFnZVNpemUud2lkdGggPSBtYXgobGFiZWxTaXplLndpZHRoICsgRFJBR19MQUJF
TF9CT1JERVJfWCAqIDIsIHVybFN0cmluZ1NpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9Y
ICogMik7CisgICAgICAgIH0KKyAgICB9CisgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gW1tbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOiBpbWFnZVNpemVdIGF1dG9yZWxlYXNlXTsKKyAgICBb
ZHJhZ0ltYWdlIGxvY2tGb2N1c107CisgICAgCisgICAgW1tOU0NvbG9yIGNvbG9yV2l0aERldmlj
ZVJlZDogMC43ZiBncmVlbjogMC43ZiBibHVlOiAwLjdmIGFscGhhOiAwLjhmXSBzZXRdOworICAg
IAorICAgIC8vIERyYWcgYSByZWN0YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMvCisgICAgTlNC
ZXppZXJQYXRoICpwYXRoID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRoXTsKKyAgICBbcGF0aCBh
cHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoMC4wZiwgMC4wZiwgRFJB
R19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKKyAgICBb
cGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoMCwgaW1hZ2VT
aXplLmhlaWdodCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMg
KiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKKyAgICBbcGF0aCBhcHBlbmRCZXpp
ZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndpZHRoIC0gRFJBR19M
QUJFTF9SQURJVVMgKiAyLjBmLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9SQURJVVMg
KiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVTICogMi4w
ZildOworICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNNYWtlUmVj
dChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIDAuMGYsIERSQUdf
TEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07CisgICAgCisg
ICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KERSQUdfTEFCRUxf
UkFESVVTLCAwLjBmLCBpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYs
IGltYWdlU2l6ZS5oZWlnaHQpXTsKKyAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6
IE5TTWFrZVJlY3QoMC4wZiwgRFJBR19MQUJFTF9SQURJVVMsIERSQUdfTEFCRUxfUkFESVVTICsg
MTAuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSAyLjBmICogRFJBR19MQUJFTF9SQURJVVMpXTsKKyAg
ICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndp
ZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgLSAyMC4wZiwgRFJBR19MQUJFTF9SQURJVVMsIERSQUdf
TEFCRUxfUkFESVVTICsgMjAuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSAyLjBmICogRFJBR19MQUJF
TF9SQURJVVMpXTsKKyAgICBbcGF0aCBmaWxsXTsKKyAgICAKKyAgICBOU0NvbG9yICp0b3BDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjAuMGYgYWxwaGE6MC43NWZdOworICAg
IE5TQ29sb3IgKmJvdHRvbUNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MS4w
ZiBhbHBoYTowLjVmXTsKKyAgICBpZiAoZHJhd1VSTFN0cmluZykgeworICAgICAgICBpZiAoY2xp
cFVSTFN0cmluZykKKyAgICAgICAgICAgIHVybFN0cmluZyA9IFtXZWJTdHJpbmdUcnVuY2F0b3Ig
Y2VudGVyVHJ1bmNhdGVTdHJpbmc6IHVybFN0cmluZyB0b1dpZHRoOmltYWdlU2l6ZS53aWR0aCAt
IChEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZikgd2l0aEZvbnQ6dXJsRm9udF07CisgICAgICAg
IAorICAgICAgICBbdXJsU3RyaW5nIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFrZVBvaW50
KERSQUdfTEFCRUxfQk9SREVSX1gsIERSQUdfTEFCRUxfQk9SREVSX1kgLSBbdXJsRm9udCBkZXNj
ZW5kZXJdKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUb3BDb2xvcjp0b3BD
b2xvciBib3R0b21Db2xvcjpib3R0b21Db2xvciBmb250OnVybEZvbnRdOworICAgIH0KKyAgICAK
KyAgICBpZiAoY2xpcExhYmVsU3RyaW5nKQorICAgICAgICBsYWJlbCA9IFtXZWJTdHJpbmdUcnVu
Y2F0b3IgcmlnaHRUcnVuY2F0ZVN0cmluZzogbGFiZWwgdG9XaWR0aDppbWFnZVNpemUud2lkdGgg
LSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIuMGYpIHdpdGhGb250OmxhYmVsRm9udF07CisgICAg
W2xhYmVsIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFrZVBvaW50IChEUkFHX0xBQkVMX0JP
UkRFUl9YLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9CT1JERVJfWV9PRkZTRVQgLSBb
bGFiZWxGb250IHBvaW50U2l6ZV0pCisgICAgICAgICAgICAgICAgICAgICAgd2l0aFRvcENvbG9y
OnRvcENvbG9yIGJvdHRvbUNvbG9yOmJvdHRvbUNvbG9yIGZvbnQ6bGFiZWxGb250XTsKKyAgICAK
KyAgICBbZHJhZ0ltYWdlIHVubG9ja0ZvY3VzXTsKKyAgICAKKyAgICByZXR1cm4gZHJhZ0ltYWdl
OwogfQogCi0KIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKE5T
UGFzdGVib2FyZCogcGFzdGVib2FyZCwgRE9NRWxlbWVudCogZWxlbWVudCwgTlNVUkwqIFVSTCwg
TlNTdHJpbmcqIHRpdGxlLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpIAogewogICAgIEFTU0VSVChw
YXN0ZWJvYXJkKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDc1
ODQ3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw3ICs2OCw2IEBACiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZVByaXZhdGUuaCIK
LSNpbXBvcnQgIldlYlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiV2ViVGV4dENvbXBsZXRp
b25Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
ZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgpAQCAtMzU4LDE4ICszNTcsNiBAQCBjb25zdCBmbG9hdCBf
V2ViSFRNTFZpZXdQcmludGluZ01heGltdW1TCiAKICNkZWZpbmUgQVVUT1NDUk9MTF9JTlRFUlZB
TCAgICAgICAgICAgICAwLjFmCiAKLSNkZWZpbmUgRFJBR19MQUJFTF9CT1JERVJfWCAgICAgICAg
ICAgICA0LjBmCi0vL0tlZXAgYm9yZGVyX3kgaW4gc3luY2ggd2l0aCBEcmFnQ29udHJvbGxlcjo6
TGlua0RyYWdCb3JkZXJJbnNldAotI2RlZmluZSBEUkFHX0xBQkVMX0JPUkRFUl9ZICAgICAgICAg
ICAgIDIuMGYKLSNkZWZpbmUgRFJBR19MQUJFTF9SQURJVVMgICAgICAgICAgICAgICA1LjBmCi0j
ZGVmaW5lIERSQUdfTEFCRUxfQk9SREVSX1lfT0ZGU0VUICAgICAgICAgICAgICAyLjBmCi0KLSNk
ZWZpbmUgTUlOX0RSQUdfTEFCRUxfV0lEVEhfQkVGT1JFX0NMSVAgICAgICAgIDEyMC4wZgotI2Rl
ZmluZSBNQVhfRFJBR19MQUJFTF9XSURUSCAgICAgICAgICAgICAgICAgICAgMzIwLjBmCi0KLSNk
ZWZpbmUgRFJBR19MSU5LX0xBQkVMX0ZPTlRfU0laRSAgIDExLjBmCi0jZGVmaW5lIERSQUdfTElO
S19VUkxfRk9OVF9TSVpFICAgMTAuMGYKLQogLy8gQW55IG5vbi16ZXJvIHZhbHVlIHdpbGwgZG8s
IGJ1dCB1c2luZyBzb21ldGhpbmcgcmVjb2duaXphYmxlIG1pZ2h0IGhlbHAgdXMgZGVidWcgc29t
ZSBkYXkuCiAjZGVmaW5lIFRSQUNLSU5HX1JFQ1RfVEFHIDB4QkFERkFDRQogCkBAIC0xNzM3LDg3
ICsxNzI0LDYgQEAgKyAoTlNBcnJheSAqKV9zZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXMKICAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgTlNS
VEZEUGJvYXJkVHlwZSwgTlNSVEZQYm9hcmRUeXBlLCBOU1N0cmluZ1Bib2FyZFR5cGUsIG5pbF07
CiB9CiAKLS0gKE5TSW1hZ2UgKilfZHJhZ0ltYWdlRm9yVVJMOihOU1N0cmluZyopdXJsU3RyaW5n
IHdpdGhMYWJlbDooTlNTdHJpbmcqKWxhYmVsCi17Ci0gICAgQk9PTCBkcmF3VVJMU3RyaW5nID0g
WUVTOwotICAgIEJPT0wgY2xpcFVSTFN0cmluZyA9IE5PLCBjbGlwTGFiZWxTdHJpbmcgPSBOTzsK
LSAgICAKLSAgICBpZiAoIWxhYmVsKSB7Ci0gICAgICAgIGRyYXdVUkxTdHJpbmcgPSBOTzsKLSAg
ICAgICAgbGFiZWwgPSB1cmxTdHJpbmc7Ci0gICAgfQotICAgIAotICAgIE5TRm9udCAqbGFiZWxG
b250ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpbTlNG
b250IHN5c3RlbUZvbnRPZlNpemU6RFJBR19MSU5LX0xBQkVMX0ZPTlRfU0laRV0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9IYXZl
VHJhaXQ6TlNCb2xkRm9udE1hc2tdOwotICAgIE5TRm9udCAqdXJsRm9udCA9IFtOU0ZvbnQgc3lz
dGVtRm9udE9mU2l6ZTogRFJBR19MSU5LX1VSTF9GT05UX1NJWkVdOwotICAgIE5TU2l6ZSBsYWJl
bFNpemU7Ci0gICAgbGFiZWxTaXplLndpZHRoID0gW2xhYmVsIF93ZWJfd2lkdGhXaXRoRm9udDog
bGFiZWxGb250XTsKLSAgICBsYWJlbFNpemUuaGVpZ2h0ID0gW2xhYmVsRm9udCBhc2NlbmRlcl0g
LSBbbGFiZWxGb250IGRlc2NlbmRlcl07Ci0gICAgaWYgKGxhYmVsU2l6ZS53aWR0aCA+IE1BWF9E
UkFHX0xBQkVMX1dJRFRIKXsKLSAgICAgICAgbGFiZWxTaXplLndpZHRoID0gTUFYX0RSQUdfTEFC
RUxfV0lEVEg7Ci0gICAgICAgIGNsaXBMYWJlbFN0cmluZyA9IFlFUzsKLSAgICB9Ci0gICAgCi0g
ICAgTlNTaXplIGltYWdlU2l6ZSwgdXJsU3RyaW5nU2l6ZTsKLSAgICBpbWFnZVNpemUud2lkdGgg
PSBsYWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZjsKLSAgICBpbWFn
ZVNpemUuaGVpZ2h0ID0gbGFiZWxTaXplLmhlaWdodCArIERSQUdfTEFCRUxfQk9SREVSX1kgKiAy
LjBmOwotICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7Ci0gICAgICAgIHVybFN0cmluZ1NpemUud2lk
dGggPSBbdXJsU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDogdXJsRm9udF07Ci0gICAgICAgIHVy
bFN0cmluZ1NpemUuaGVpZ2h0ID0gW3VybEZvbnQgYXNjZW5kZXJdIC0gW3VybEZvbnQgZGVzY2Vu
ZGVyXTsKLSAgICAgICAgaW1hZ2VTaXplLmhlaWdodCArPSB1cmxTdHJpbmdTaXplLmhlaWdodDsK
LSAgICAgICAgaWYgKHVybFN0cmluZ1NpemUud2lkdGggPiBNQVhfRFJBR19MQUJFTF9XSURUSCkg
ewotICAgICAgICAgICAgaW1hZ2VTaXplLndpZHRoID0gbWF4KE1BWF9EUkFHX0xBQkVMX1dJRFRI
ICsgRFJBR19MQUJFTF9CT1JERVJfWCAqIDIsIE1JTl9EUkFHX0xBQkVMX1dJRFRIX0JFRk9SRV9D
TElQKTsKLSAgICAgICAgICAgIGNsaXBVUkxTdHJpbmcgPSBZRVM7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpbWFnZVNpemUud2lkdGggPSBtYXgobGFiZWxTaXplLndpZHRoICsgRFJB
R19MQUJFTF9CT1JERVJfWCAqIDIsIHVybFN0cmluZ1NpemUud2lkdGggKyBEUkFHX0xBQkVMX0JP
UkRFUl9YICogMik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0g
W1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhTaXplOiBpbWFnZVNpemVdIGF1dG9yZWxlYXNlXTsK
LSAgICBbZHJhZ0ltYWdlIGxvY2tGb2N1c107Ci0gICAgCi0gICAgW1tOU0NvbG9yIGNvbG9yV2l0
aERldmljZVJlZDogMC43ZiBncmVlbjogMC43ZiBibHVlOiAwLjdmIGFscGhhOiAwLjhmXSBzZXRd
OwotICAgIAotICAgIC8vIERyYWcgYSByZWN0YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMvCi0g
ICAgTlNCZXppZXJQYXRoICpwYXRoID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRoXTsKLSAgICBb
cGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoMC4wZiwgMC4w
ZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsK
LSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoMCwg
aW1hZ2VTaXplLmhlaWdodCAtIERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9S
QURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYpXTsKLSAgICBbcGF0aCBhcHBl
bmRCZXppZXJQYXRoV2l0aE92YWxJblJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VTaXplLndpZHRoIC0g
RFJBR19MQUJFTF9SQURJVVMgKiAyLjBmLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9S
QURJVVMgKiAyLjBmLCBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIERSQUdfTEFCRUxfUkFESVVT
ICogMi4wZildOwotICAgIFtwYXRoIGFwcGVuZEJlemllclBhdGhXaXRoT3ZhbEluUmVjdDogTlNN
YWtlUmVjdChpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAqIDIuMGYsIDAuMGYs
IERSQUdfTEFCRUxfUkFESVVTICogMi4wZiwgRFJBR19MQUJFTF9SQURJVVMgKiAyLjBmKV07Ci0g
ICAgCi0gICAgW3BhdGggYXBwZW5kQmV6aWVyUGF0aFdpdGhSZWN0OiBOU01ha2VSZWN0KERSQUdf
TEFCRUxfUkFESVVTLCAwLjBmLCBpbWFnZVNpemUud2lkdGggLSBEUkFHX0xBQkVMX1JBRElVUyAq
IDIuMGYsIGltYWdlU2l6ZS5oZWlnaHQpXTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0
aFJlY3Q6IE5TTWFrZVJlY3QoMC4wZiwgRFJBR19MQUJFTF9SQURJVVMsIERSQUdfTEFCRUxfUkFE
SVVTICsgMTAuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSAyLjBmICogRFJBR19MQUJFTF9SQURJVVMp
XTsKLSAgICBbcGF0aCBhcHBlbmRCZXppZXJQYXRoV2l0aFJlY3Q6IE5TTWFrZVJlY3QoaW1hZ2VT
aXplLndpZHRoIC0gRFJBR19MQUJFTF9SQURJVVMgLSAyMC4wZiwgRFJBR19MQUJFTF9SQURJVVMs
IERSQUdfTEFCRUxfUkFESVVTICsgMjAuMGYsIGltYWdlU2l6ZS5oZWlnaHQgLSAyLjBmICogRFJB
R19MQUJFTF9SQURJVVMpXTsKLSAgICBbcGF0aCBmaWxsXTsKLSAgICAKLSAgICBOU0NvbG9yICp0
b3BDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjAuMGYgYWxwaGE6MC43NWZd
OwotICAgIE5TQ29sb3IgKmJvdHRvbUNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hp
dGU6MS4wZiBhbHBoYTowLjVmXTsKLSAgICBpZiAoZHJhd1VSTFN0cmluZykgewotICAgICAgICBp
ZiAoY2xpcFVSTFN0cmluZykKLSAgICAgICAgICAgIHVybFN0cmluZyA9IFtXZWJTdHJpbmdUcnVu
Y2F0b3IgY2VudGVyVHJ1bmNhdGVTdHJpbmc6IHVybFN0cmluZyB0b1dpZHRoOmltYWdlU2l6ZS53
aWR0aCAtIChEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZikgd2l0aEZvbnQ6dXJsRm9udF07Ci0g
ICAgICAgIAotICAgICAgICBbdXJsU3RyaW5nIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFr
ZVBvaW50KERSQUdfTEFCRUxfQk9SREVSX1gsIERSQUdfTEFCRUxfQk9SREVSX1kgLSBbdXJsRm9u
dCBkZXNjZW5kZXJdKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUb3BDb2xv
cjp0b3BDb2xvciBib3R0b21Db2xvcjpib3R0b21Db2xvciBmb250OnVybEZvbnRdOwotICAgIH0K
LSAgICAKLSAgICBpZiAoY2xpcExhYmVsU3RyaW5nKQotICAgICAgICBsYWJlbCA9IFtXZWJTdHJp
bmdUcnVuY2F0b3IgcmlnaHRUcnVuY2F0ZVN0cmluZzogbGFiZWwgdG9XaWR0aDppbWFnZVNpemUu
d2lkdGggLSAoRFJBR19MQUJFTF9CT1JERVJfWCAqIDIuMGYpIHdpdGhGb250OmxhYmVsRm9udF07
Ci0gICAgW2xhYmVsIF93ZWJfZHJhd0RvdWJsZWRBdFBvaW50Ok5TTWFrZVBvaW50IChEUkFHX0xB
QkVMX0JPUkRFUl9YLCBpbWFnZVNpemUuaGVpZ2h0IC0gRFJBR19MQUJFTF9CT1JERVJfWV9PRkZT
RVQgLSBbbGFiZWxGb250IHBvaW50U2l6ZV0pCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aFRv
cENvbG9yOnRvcENvbG9yIGJvdHRvbUNvbG9yOmJvdHRvbUNvbG9yIGZvbnQ6bGFiZWxGb250XTsK
LSAgICAKLSAgICBbZHJhZ0ltYWdlIHVubG9ja0ZvY3VzXTsKLSAgICAKLSAgICByZXR1cm4gZHJh
Z0ltYWdlOwotfQotCi0tIChOU0ltYWdlICopX2RyYWdJbWFnZUZvckxpbmtFbGVtZW50OihOU0Rp
Y3Rpb25hcnkgKillbGVtZW50Ci17Ci0gICAgTlNVUkwgKmxpbmtVUkwgPSBbZWxlbWVudCBvYmpl
Y3RGb3JLZXk6IFdlYkVsZW1lbnRMaW5rVVJMS2V5XTsKLSAgICAKLSAgICBOU1N0cmluZyAqbGFi
ZWwgPSBbZWxlbWVudCBvYmplY3RGb3JLZXk6IFdlYkVsZW1lbnRMaW5rTGFiZWxLZXldOwotICAg
IE5TU3RyaW5nICp1cmxTdHJpbmcgPSBbbGlua1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXTsK
LSAgICByZXR1cm4gW3NlbGYgX2RyYWdJbWFnZUZvclVSTDp1cmxTdHJpbmcgd2l0aExhYmVsOmxh
YmVsXTsKLX0KLQogLSAodm9pZClwYXN0ZWJvYXJkQ2hhbmdlZE93bmVyOihOU1Bhc3RlYm9hcmQg
KilwYXN0ZWJvYXJkCiB7CiAgICAgW3NlbGYgc2V0UHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2U6
MF07CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oCShyZXZpc2lv
biA3NTg0NykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJQ
cml2YXRlKQogCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZDsKIAotLSAoTlNJbWFnZSAq
KV9kcmFnSW1hZ2VGb3JMaW5rRWxlbWVudDooTlNEaWN0aW9uYXJ5ICopZWxlbWVudDsKLS0gKE5T
SW1hZ2UgKilfZHJhZ0ltYWdlRm9yVVJMOihOU1N0cmluZyopbGlua1VSTCB3aXRoTGFiZWw6KE5T
U3RyaW5nKilsYWJlbDsKIC0gKHZvaWQpX2hhbmRsZUF1dG9zY3JvbGxGb3JNb3VzZURyYWdnZWQ6
KE5TRXZlbnQgKilldmVudDsKIC0gKFdlYlBsdWdpbkNvbnRyb2xsZXIgKilfcGx1Z2luQ29udHJv
bGxlcjsKIAo=
</data>
<flag name="review"
          id="70431"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>