<?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>143952</bug_id>
          
          <creation_ts>2015-04-20 10:18:13 -0700</creation_ts>
          <short_desc>Immediate action not functional for embedded PDFs</short_desc>
          <delta_ts>2015-04-24 12:34:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143895</dependson>
          <blocked>144149</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086813</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-20 10:18:13 -0700</bug_when>
    <thetext>There is currently no immediate action support for embedded PDFs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088038</commentid>
    <comment_count>1</comment_count>
      <attachid>251500</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 15:26:53 -0700</bug_when>
    <thetext>Created attachment 251500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088039</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 15:27:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/19842365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088040</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 15:28:52 -0700</bug_when>
    <thetext>Attachment 251500 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:607:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088041</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 15:29:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 251500 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:607:  Place brace
&gt; on its own line for function definitions.  [whitespace/braces] [4]
&gt; Total errors found: 1 in 12 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This is a Block, which is styled properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088046</commentid>
    <comment_count>5</comment_count>
      <attachid>251500</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-23 15:38:26 -0700</bug_when>
    <thetext>Comment on attachment 251500
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.h:127
&gt; +    WebCore::FloatRect viewRectForSelection(PDFSelection *) const override { return WebCore::FloatRect(); }

I have to say, these things are getting pretty not abstract. Maybe we should give up on the abstraction for some things and talk directly to PDFPlugin? Or make these things more generic (sufficiently generic that they could be IPCable in the case we ever want to put PDFPlugin in its own process?).

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:1937
&gt; +static NSRect rectInWindowSpaceForRectInLayoutSpace(PDFLayerController* pdfLayerController, NSRect rectInLayout)

&quot;window&quot;, really?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:622
&gt; +    dataForSelection.contentImageScaleFactor = 1.0;

Does this work on 2x displays?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088055</commentid>
    <comment_count>6</comment_count>
      <attachid>251500</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 15:44:10 -0700</bug_when>
    <thetext>Comment on attachment 251500
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.h:127
&gt;&gt; +    WebCore::FloatRect viewRectForSelection(PDFSelection *) const override { return WebCore::FloatRect(); }
&gt; 
&gt; I have to say, these things are getting pretty not abstract. Maybe we should give up on the abstraction for some things and talk directly to PDFPlugin? Or make these things more generic (sufficiently generic that they could be IPCable in the case we ever want to put PDFPlugin in its own process?).

I&apos;m fine grabbing the PDFPlugin directly. Why don&apos;t I move the PDFSelection-based API out of PluginView, since other plugins are not going to deal in terms of PDFSelections.

I could just pass the hit test point again, but that seems like extra work for little gain (although that is the way we would want to do this if we were IPC&apos;ing to a separate process.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:1937
&gt;&gt; +static NSRect rectInWindowSpaceForRectInLayoutSpace(PDFLayerController* pdfLayerController, NSRect rectInLayout)
&gt; 
&gt; &quot;window&quot;, really?

rectInViewSpaceForRectInLayoutSpace?

&gt;&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:622
&gt;&gt; +    dataForSelection.contentImageScaleFactor = 1.0;
&gt; 
&gt; Does this work on 2x displays?

Well, images don&apos;t work at all so this is just a placeholder so it&apos;s not uninitialized. I guess I could supply &apos;contentScaleFactor&apos; or something here, but since I do not supply images in general I don&apos;t know that it makes much of a difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088071</commentid>
    <comment_count>7</comment_count>
      <attachid>251500</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-23 16:02:19 -0700</bug_when>
    <thetext>Comment on attachment 251500
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.h:127
&gt;&gt;&gt; +    WebCore::FloatRect viewRectForSelection(PDFSelection *) const override { return WebCore::FloatRect(); }
&gt;&gt; 
&gt;&gt; I have to say, these things are getting pretty not abstract. Maybe we should give up on the abstraction for some things and talk directly to PDFPlugin? Or make these things more generic (sufficiently generic that they could be IPCable in the case we ever want to put PDFPlugin in its own process?).
&gt; 
&gt; I&apos;m fine grabbing the PDFPlugin directly. Why don&apos;t I move the PDFSelection-based API out of PluginView, since other plugins are not going to deal in terms of PDFSelections.
&gt; 
&gt; I could just pass the hit test point again, but that seems like extra work for little gain (although that is the way we would want to do this if we were IPC&apos;ing to a separate process.

&gt; I&apos;m fine grabbing the PDFPlugin directly.

I ask this mostly in a bigger sense; a lot of things were added to PluginProxy/PluginView just for PDFPlugin, and in retrospect it seems silly (especially watching things with PDF in their name get added).

Try talking to PDFPlugin directly and see how ugly it is. Or maybe talk to Anders.

&gt;&gt;&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:1937
&gt;&gt;&gt; +static NSRect rectInWindowSpaceForRectInLayoutSpace(PDFLayerController* pdfLayerController, NSRect rectInLayout)
&gt;&gt; 
&gt;&gt; &quot;window&quot;, really?
&gt; 
&gt; rectInViewSpaceForRectInLayoutSpace?

Sure.

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:622
&gt;&gt;&gt; +    dataForSelection.contentImageScaleFactor = 1.0;
&gt;&gt; 
&gt;&gt; Does this work on 2x displays?
&gt; 
&gt; Well, images don&apos;t work at all so this is just a placeholder so it&apos;s not uninitialized. I guess I could supply &apos;contentScaleFactor&apos; or something here, but since I do not supply images in general I don&apos;t know that it makes much of a difference?

Ah, I mixed this up with the TextIndicator content image scale factor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088076</commentid>
    <comment_count>8</comment_count>
      <attachid>251509</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 16:04:38 -0700</bug_when>
    <thetext>Created attachment 251509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088077</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 16:05:55 -0700</bug_when>
    <thetext>Attachment 251509 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:607:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088110</commentid>
    <comment_count>10</comment_count>
      <attachid>251516</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 17:26:39 -0700</bug_when>
    <thetext>Created attachment 251516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088111</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 17:29:39 -0700</bug_when>
    <thetext>Attachment 251516 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:608:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088175</commentid>
    <comment_count>12</comment_count>
      <attachid>251534</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-23 21:22:03 -0700</bug_when>
    <thetext>Created attachment 251534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088176</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 21:23:07 -0700</bug_when>
    <thetext>Attachment 251534 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:608:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088274</commentid>
    <comment_count>14</comment_count>
      <attachid>251534</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-24 11:26:05 -0700</bug_when>
    <thetext>Comment on attachment 251534
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:1942
&gt; +    CGFloat scaleFactor = [pdfLayerController contentScaleFactor];
&gt; +    CGPoint scrollOffset = [pdfLayerController scrollPosition];

dot notation everywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088298</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-24 12:34:18 -0700</bug_when>
    <thetext>Committed r183277: &lt;http://trac.webkit.org/changeset/183277&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251500</attachid>
            <date>2015-04-23 15:26:53 -0700</date>
            <delta_ts>2015-04-23 16:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143952-20150423152548.patch</filename>
            <type>text/plain</type>
            <size>16206</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltbWVkaWF0ZSBhY3Rpb24g
bm90IGZ1bmN0aW9uYWwgZm9yIGVtYmVkZGVkIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTk4NDIzNjU+ICAgICAgICAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBkaWN0aW9uYXJ5IGxvb2t1cCBtZXRob2QgdG8gYWxsb3cgdXMgdG8g
cmV0cmlldmUKKyAgICAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIFBERnMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IFVwZGF0ZWQgdG8gcHJvcGVybHkgaGFu
ZGxlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBMb29rdXAgZW5naW5lIHNlbGVjdHMgYSBzbWFs
bGVyIHJhbmdlIHRoYW4gdGhlIGluaXRpYWwgYXV0b21hdGljCisgICAgICAgIHNlbGVjdGlvbiBw
ZXJmb3JtZWQgb24gY2xpY2tpbmcuCisKIDIwMTUtMDQtMjMgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgYSBidXR0b24gaW4g
cjE4MjkwMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5tbQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRGljdGlvbmFyeUxvb2t1cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDEwICsyMDMsOCBA
QCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvCiAgICAgaWYgKGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rp
b24uc3RyaW5nOwogICAgIAotICAgIE5TSW50ZWdlciBsb29rdXBBZGRlZEJlZm9yZSA9IChleHRy
YWN0ZWRSYW5nZS5sb2NhdGlvbiA8IHJhbmdlVG9QYXNzLmxvY2F0aW9uKSA/IHJhbmdlVG9QYXNz
LmxvY2F0aW9uIC0gZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gOiAwOwotICAgIE5TSW50ZWdlciBs
b29rdXBBZGRlZEFmdGVyID0gMDsKLSAgICBpZiAoKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uICsg
ZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSA+IChyYW5nZVRvUGFzcy5sb2NhdGlvbiArIG9yaWdpbmFs
TGVuZ3RoKSkKLSAgICAgICAgbG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2Nh
dGlvbiArIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBv
cmlnaW5hbExlbmd0aCk7CisgICAgTlNJbnRlZ2VyIGxvb2t1cEFkZGVkQmVmb3JlID0gcmFuZ2VU
b1Bhc3MubG9jYXRpb24gLSBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbjsKKyAgICBOU0ludGVnZXIg
bG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiArIGV4dHJhY3RlZFJh
bmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBvcmlnaW5hbExlbmd0aCk7CiAg
ICAgCiAgICAgW3NlbGVjdGlvbiBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0Omxvb2t1cEFkZGVkQmVm
b3JlXTsKICAgICBbc2VsZWN0aW9uIGV4dGVuZFNlbGVjdGlvbkF0RW5kOmxvb2t1cEFkZGVkQWZ0
ZXJdOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjExKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDQtMjMgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1tZWRpYXRlIGFj
dGlvbiBub3QgZnVuY3Rpb25hbCBmb3IgZW1iZWRkZWQgUERGcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xOTg0MjM2NT4gICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gcmV0cmlldmUgYXBwcm9wcmlhdGUg
ZGljdGlvbmFyeSBsb29rdXAgY29udGVudCBhbmQgdXBkYXRlIHRoZQorICAgICAgICBoaXQgdGVz
dCByZXN1bHQgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGNvbnRlbnQgYW5kIHRoZSBib3VuZGlu
ZyByZWN0IG9mIHRoZQorICAgICAgICBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDogQWRkIHN0dWIuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdEluV2luZG93
U3BhY2VGb3JSZWN0SW5MYXlvdXRTcGFjZSk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8KKyAgICAg
ICAgY29udmVydCBQREYgJ2luIHBhZ2UnIHVuaXRzIHRvIHRoZSBlcXVpdmFsZW50IHZpZXcgdW5p
dHMuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dmlld1JlY3RGb3JTZWxlY3Rpb24pOiBR
dWVyeSBhIHByb3ZpZGVkIFBERlNlbGVjdGlvbiBmb3IKKyAgICAgICAgaXRzIGJvdW5kaW5nIHJl
Y3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGluIHZpZXcgdW5pdHMuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOiAgQWRkIHN0dWIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld1JlY3RGb3JTZWxl
Y3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3KTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVu
dSk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbik6IFVwZGF0ZSB0aGUgaGl0IHRlc3QgaW5m
b3JtYXRpb24KKyAgICAgICAgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGxvb2t1cCBjb250ZW50
LCBhbmQgbWFyayB0aGUgcmVzdWx0IGFzIGEgdGV4dCBub2RlIChpZgorICAgICAgICBhcHByb3By
aWF0ZSkuCisKIDIwMTUtMDQtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gV2ViS2l0IHNlcnZpY2VzIHNob3VsZCBpbmhlcml0IGVudmlyb25t
ZW50IHZhcmlhYmxlcyBmb3IgaG9tZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNiArMjg0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9p
bnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioq
LCBOU0RpY3Rpb25hcnkqKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHZpZXdSZWN0Rm9yU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAqKSBjb25zdCA9IDA7CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBhdWRp
b0hhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpBdWRpb0hhcmR3YXJl
QWN0aXZpdHlUeXBlOjpVbmtub3duOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29tcGxl
eFRleHRJbnB1dChjb25zdCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uKiosIE5TRGljdGlvbmFyeSoq
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCB2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rpb24gKikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gV2ViQ29yZTo6RmxvYXRSZWN0KCk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJl
dmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxNyw2ICsxMDE3LDE0IEBAIFN0cmluZyBQ
bHVnaW5WaWV3Ojpsb29rdXBUZXh0QXRMb2NhdGlvbigKIAogICAgIHJldHVybiBtX3BsdWdpbi0+
bG9va3VwVGV4dEF0TG9jYXRpb24ocG9pbnQsIGRhdGEsIHNlbGVjdGlvbiwgb3B0aW9ucyk7CiB9
CisKK0Zsb2F0UmVjdCBQbHVnaW5WaWV3Ojp2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rp
b24gKnNlbGVjdGlvbikKK3sKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4p
CisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyAgICAKKyAgICByZXR1cm4gbV9wbHVnaW4t
PnZpZXdSZWN0Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7Cit9CiAjZW5kaWYKIAogdm9pZCBQbHVn
aW5WaWV3Ojpub3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAko
cmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAg
UmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnaW4tPnBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKTsgfQogICAgIE5TT2JqZWN0
ICphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Q7CiAgICAgU3RyaW5nIGxvb2t1cFRleHRBdExv
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRh
JiwgUERGU2VsZWN0aW9uKiosIE5TRGljdGlvbmFyeSoqKSBjb25zdDsKKyAgICBXZWJDb3JlOjpG
bG9hdFJlY3Qgdmlld1JlY3RGb3JTZWxlY3Rpb24oUERGU2VsZWN0aW9uICopOwogI2VuZGlmCiAK
ICAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgJKHJldmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW4u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTI0
Miw2ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVQbHVnaW5MYXllcigpOwog
ICAgIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioqIHNlbGVjdGlvbiwgTlNE
aWN0aW9uYXJ5KiopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IHZpZXdSZWN0Rm9yU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAqKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoKTsgfTsKICNlbmRpZgogCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGV4aXN0aW5n
U2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uICoqLCBO
U0RpY3Rpb25hcnkgKiopIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB2
aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rpb24gKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3Mo
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMTgzMTkzKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM5NSw2ICszOTUsNyBAQCAtICh2b2lkKXBkZkxheWVyQ29udHJvbGxl
cjooUERGTGF5ZXJDb250CiAKIEBpbnRlcmZhY2UgUERGVmlld0xheW91dAogLSAoTlNQb2ludClj
b252ZXJ0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgdG9QYWdlOihQREZQYWdlICopcGFnZSBmb3JTY2Fs
ZUZhY3RvcjooQ0dGbG9hdClzY2FsZUZhY3RvcjsKKy0gKE5TUmVjdCljb252ZXJ0UmVjdDooTlNS
ZWN0KXJlY3QgZnJvbVBhZ2U6KFBERlBhZ2UgKikgcGFnZSBmb3JTY2FsZUZhY3RvcjooQ0dGbG9h
dCkgc2NhbGVGYWN0b3I7CiAtIChQREZQYWdlICopcGFnZU5lYXJlc3RQb2ludDooTlNQb2ludClw
b2ludCBjdXJyZW50UGFnZTooUERGUGFnZSAqKWN1cnJlbnRQYWdlOwogQGVuZAogCkBAIC0xOTMz
LDYgKzE5MzQsMzggQEAgU3RyaW5nIFBERlBsdWdpbjo6bG9va3VwVGV4dEF0TG9jYXRpb24oYwog
ICAgIHJldHVybiBsb29rdXBUZXh0OwogfQogCitzdGF0aWMgTlNSZWN0IHJlY3RJbldpbmRvd1Nw
YWNlRm9yUmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9sbGVyKiBwZGZMYXllckNvbnRy
b2xsZXIsIE5TUmVjdCByZWN0SW5MYXlvdXQpCit7CisgICAgQ0dSZWN0IGNnUmVjdEluTGF5b3V0
ID0gTlNSZWN0VG9DR1JlY3QocmVjdEluTGF5b3V0KTsKKyAgICBDR0Zsb2F0IHNjYWxlRmFjdG9y
ID0gW3BkZkxheWVyQ29udHJvbGxlciBjb250ZW50U2NhbGVGYWN0b3JdOworICAgIENHUG9pbnQg
c2Nyb2xsT2Zmc2V0ID0gW3BkZkxheWVyQ29udHJvbGxlciBzY3JvbGxQb3NpdGlvbl07CisKKyAg
ICBzY3JvbGxPZmZzZXQueSA9IFtwZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNpemVSZXNwZWN0
aW5nWm9vbV0uaGVpZ2h0IC0gTlNSZWN0VG9DR1JlY3QoW3BkZkxheWVyQ29udHJvbGxlciBmcmFt
ZV0pLnNpemUuaGVpZ2h0IC0gc2Nyb2xsT2Zmc2V0Lnk7CisKKyAgICBjZ1JlY3RJbkxheW91dC5v
cmlnaW4ueCAqPSBzY2FsZUZhY3RvcjsKKyAgICBjZ1JlY3RJbkxheW91dC5vcmlnaW4ueSAqPSBz
Y2FsZUZhY3RvcjsKKyAgICBjZ1JlY3RJbkxheW91dC5zaXplLndpZHRoICo9IHNjYWxlRmFjdG9y
OworICAgIGNnUmVjdEluTGF5b3V0LnNpemUuaGVpZ2h0ICo9IHNjYWxlRmFjdG9yOworCisgICAg
Y2dSZWN0SW5MYXlvdXQub3JpZ2luLnggLT0gc2Nyb2xsT2Zmc2V0Lng7CisgICAgY2dSZWN0SW5M
YXlvdXQub3JpZ2luLnkgLT0gc2Nyb2xsT2Zmc2V0Lnk7CisKKyAgICByZXR1cm4gTlNSZWN0RnJv
bUNHUmVjdChjZ1JlY3RJbkxheW91dCk7Cit9CisKK1dlYkNvcmU6OkZsb2F0UmVjdCBQREZQbHVn
aW46OnZpZXdSZWN0Rm9yU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uKSBjb25zdAor
eworICAgIFBERlBhZ2UgKmN1cnJlbnRQYWdlID0gW21fcGRmTGF5ZXJDb250cm9sbGVyIGN1cnJl
bnRQYWdlXTsKKyAgICAKKyAgICBOU1JlY3QgcmVjdEluUGFnZVNwYWNlID0gW3NlbGVjdGlvbiBi
b3VuZHNGb3JQYWdlOmN1cnJlbnRQYWdlXTsKKyAgICBOU1JlY3QgcmVjdEluTGF5b3V0U3BhY2Ug
PSBbW21fcGRmTGF5ZXJDb250cm9sbGVyIGxheW91dF0gY29udmVydFJlY3Q6cmVjdEluUGFnZVNw
YWNlIGZyb21QYWdlOmN1cnJlbnRQYWdlIGZvclNjYWxlRmFjdG9yOjEuMF07CisgICAgTlNSZWN0
IHJlY3RJblZpZXcgPSByZWN0SW5XaW5kb3dTcGFjZUZvclJlY3RJbkxheW91dFNwYWNlKG1fcGRm
TGF5ZXJDb250cm9sbGVyLmdldCgpLCByZWN0SW5MYXlvdXRTcGFjZSk7CisKKyAgICByZWN0SW5W
aWV3Lm9yaWdpbiA9IGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoSW50UG9pbnQocmVjdElu
Vmlldy5vcmlnaW4pKTsKKworICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QocmVjdEluVmll
dyk7Cit9CisKIHZvaWQgUERGUGx1Z2luOjpwZXJmb3JtV2ViU2VhcmNoKE5TU3RyaW5nICpzdHJp
bmcpCiB7CiAgICAgd2ViRnJhbWUoKS0+cGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNlYXJjaFRoZVdlYihzdHJpbmcpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxMyw2
ICsxMDEzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZD
dXJyZW50U2VsZWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJh
bmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6UmFuZ2UmLCBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICAgICBE
aWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShXZWJDb3JlOjpG
cmFtZSogZnJhbWUsIFdlYkNvcmU6OlJhbmdlJiByYW5nZSwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9u
cywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0
aW9uVHJhbnNpdGlvbik7CisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisgICAgRGljdGlvbmFy
eVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3
KFBERlNlbGVjdGlvbiAqLCBQbHVnaW5WaWV3JiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywgV2Vi
Q29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24pOworI2VuZGlmCiAKICAg
ICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01ODYsNiArNTg2LDQ5IEBAIERp
Y3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVAKICAgICByZXR1cm4gZGljdGlv
bmFyeVBvcHVwSW5mbzsKIH0KIAorI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorRGljdGlvbmFy
eVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5Q
bHVnaW5WaWV3KFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBQbHVnaW5WaWV3JiBwbHVnaW5WaWV3
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0
aW9uVHJhbnNpdGlvbiBwcmVzZW50YXRpb25UcmFuc2l0aW9uKQoreworICAgIERpY3Rpb25hcnlQ
b3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKKyAgICBpZiAoIXNlbGVjdGlvbi5zdHJpbmcu
bGVuZ3RoKQorICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKKworICAgIE5TUmVj
dCByYW5nZVJlY3QgPSBwbHVnaW5WaWV3LnZpZXdSZWN0Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7
CisKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbiA9IHJhbmdlUmVjdC5vcmlnaW47Cisg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0gKENGRGljdGlvbmFyeVJlZikqb3B0aW9u
czsKKyAgICAKKyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKm5zQXR0cmlidXRlZFN0cmluZyA9IHNl
bGVjdGlvbi5hdHRyaWJ1dGVkU3RyaW5nOworICAgIAorICAgIFJldGFpblB0cjxOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nPiBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W25zQXR0cmlidXRl
ZFN0cmluZyBzdHJpbmddXSk7CisgICAgCisgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIg
PSBbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07CisgICAgCisgICAgW25zQXR0cmli
dXRlZFN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbbnNB
dHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBzY2FsZWRBdHRyaWJ1dGVzID0gYWRvcHROUyhb
YXR0cmlidXRlcyBtdXRhYmxlQ29weV0pOworICAgICAgICAKKyAgICAgICAgTlNGb250ICpmb250
ID0gW3NjYWxlZEF0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwor
ICAgICAgICBpZiAoZm9udCkgeworICAgICAgICAgICAgZm9udCA9IFtmb250TWFuYWdlciBjb252
ZXJ0Rm9udDpmb250IHRvU2l6ZTpbZm9udCBwb2ludFNpemVdICogcGFnZVNjYWxlRmFjdG9yKCld
OworICAgICAgICAgICAgW3NjYWxlZEF0dHJpYnV0ZXMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbc2NhbGVk
TlNBdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZXM6c2NhbGVkQXR0cmlidXRlcy5nZXQoKSBy
YW5nZTpyYW5nZV07CisgICAgfV07CisKKyAgICBUZXh0SW5kaWNhdG9yRGF0YSBkYXRhRm9yU2Vs
ZWN0aW9uOworICAgIGRhdGFGb3JTZWxlY3Rpb24uc2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IHJhbmdlUmVjdDsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnRleHRCb3VuZGluZ1Jl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSByYW5nZVJlY3Q7CisgICAgZGF0YUZvclNlbGVjdGlv
bi5jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IDEuMDsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gPSBwcmVzZW50YXRpb25UcmFuc2l0aW9uOworICAgIAorICAg
IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciA9IGRhdGFGb3JTZWxlY3Rpb247Cisg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxlZE5T
QXR0cmlidXRlZFN0cmluZzsKKyAgICAKKyAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yUmFu
Z2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIE5TRGljdGlvbmFyeSAqb3B0aW9ucywgVGV4
dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikK
IHsKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvRm9yUmFuZ2UoZnJhbWUsIHJhbmdlLCAmb3B0aW9ucywgcHJlc2VudGF0aW9u
VHJhbnNpdGlvbik7CkBAIC0xMDEzLDYgKzEwNTYsMTUgQEAgc3RhdGljIFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aQogICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluIDogVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZTsKIH0KIAorI2lmIEVOQUJMRShQREZLSVRfUExV
R0lOKQorc3RhdGljIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHRleHRJbmRp
Y2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9v
bCBmb3JEYXRhRGV0ZWN0b3JzKQoreworICAgIGlmIChmb3JEYXRhRGV0ZWN0b3JzICYmICFmb3JJ
bW1lZGlhdGVBY3Rpb24pCisgICAgICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Q3Jvc3NmYWRlIDogVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZTsKKyAgICByZXR1cm4g
Zm9ySW1tZWRpYXRlQWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkZhZGVJbiA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7Cit9
CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0
aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgYm9vbCBm
b3JJbW1lZGlhdGVBY3Rpb24pCiB7CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKQEAgLTExMTksOCAr
MTE3MSwxMSBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5sb29rdXBU
ZXh0ID0gc2VsZWN0ZWRUZXh0OworICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuaXNU
ZXh0Tm9kZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5pc1NlbGVj
dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmFsbG93c0NvcHkg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kaWN0aW9uYXJ5UG9w
dXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclBERlNlbGVjdGlvbkluUGx1Z2luVmlldyhz
ZWxlY3Rpb24sICpwbHVnaW5WaWV3LCAmb3B0aW9ucywgdGV4dEluZGljYXRvclRyYW5zaXRpb25G
b3JBY3Rpb25NZW51KGZvckltbWVkaWF0ZUFjdGlvbiwgZmFsc2UpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251509</attachid>
            <date>2015-04-23 16:04:38 -0700</date>
            <delta_ts>2015-04-23 17:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143952-20150423160333.patch</filename>
            <type>text/plain</type>
            <size>16453</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltbWVkaWF0ZSBhY3Rpb24g
bm90IGZ1bmN0aW9uYWwgZm9yIGVtYmVkZGVkIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTk4NDIzNjU+ICAgICAgICAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBkaWN0aW9uYXJ5IGxvb2t1cCBtZXRob2QgdG8gYWxsb3cgdXMgdG8g
cmV0cmlldmUKKyAgICAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIFBERnMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IFVwZGF0ZWQgdG8gcHJvcGVybHkgaGFu
ZGxlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBMb29rdXAgZW5naW5lIHNlbGVjdHMgYSBzbWFs
bGVyIHJhbmdlIHRoYW4gdGhlIGluaXRpYWwgYXV0b21hdGljCisgICAgICAgIHNlbGVjdGlvbiBw
ZXJmb3JtZWQgb24gY2xpY2tpbmcuCisKIDIwMTUtMDQtMjMgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgYSBidXR0b24gaW4g
cjE4MjkwMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5tbQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRGljdGlvbmFyeUxvb2t1cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDEwICsyMDMsOCBA
QCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvCiAgICAgaWYgKGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rp
b24uc3RyaW5nOwogICAgIAotICAgIE5TSW50ZWdlciBsb29rdXBBZGRlZEJlZm9yZSA9IChleHRy
YWN0ZWRSYW5nZS5sb2NhdGlvbiA8IHJhbmdlVG9QYXNzLmxvY2F0aW9uKSA/IHJhbmdlVG9QYXNz
LmxvY2F0aW9uIC0gZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gOiAwOwotICAgIE5TSW50ZWdlciBs
b29rdXBBZGRlZEFmdGVyID0gMDsKLSAgICBpZiAoKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uICsg
ZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSA+IChyYW5nZVRvUGFzcy5sb2NhdGlvbiArIG9yaWdpbmFs
TGVuZ3RoKSkKLSAgICAgICAgbG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2Nh
dGlvbiArIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBv
cmlnaW5hbExlbmd0aCk7CisgICAgTlNJbnRlZ2VyIGxvb2t1cEFkZGVkQmVmb3JlID0gcmFuZ2VU
b1Bhc3MubG9jYXRpb24gLSBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbjsKKyAgICBOU0ludGVnZXIg
bG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiArIGV4dHJhY3RlZFJh
bmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBvcmlnaW5hbExlbmd0aCk7CiAg
ICAgCiAgICAgW3NlbGVjdGlvbiBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0Omxvb2t1cEFkZGVkQmVm
b3JlXTsKICAgICBbc2VsZWN0aW9uIGV4dGVuZFNlbGVjdGlvbkF0RW5kOmxvb2t1cEFkZGVkQWZ0
ZXJdOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjExKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDQtMjMgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1tZWRpYXRlIGFj
dGlvbiBub3QgZnVuY3Rpb25hbCBmb3IgZW1iZWRkZWQgUERGcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xOTg0MjM2NT4gICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gcmV0cmlldmUgYXBwcm9wcmlhdGUg
ZGljdGlvbmFyeSBsb29rdXAgY29udGVudCBhbmQgdXBkYXRlIHRoZQorICAgICAgICBoaXQgdGVz
dCByZXN1bHQgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGNvbnRlbnQgYW5kIHRoZSBib3VuZGlu
ZyByZWN0IG9mIHRoZQorICAgICAgICBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDogQWRkIHN0dWIuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdEluV2luZG93
U3BhY2VGb3JSZWN0SW5MYXlvdXRTcGFjZSk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8KKyAgICAg
ICAgY29udmVydCBQREYgJ2luIHBhZ2UnIHVuaXRzIHRvIHRoZSBlcXVpdmFsZW50IHZpZXcgdW5p
dHMuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dmlld1JlY3RGb3JTZWxlY3Rpb24pOiBR
dWVyeSBhIHByb3ZpZGVkIFBERlNlbGVjdGlvbiBmb3IKKyAgICAgICAgaXRzIGJvdW5kaW5nIHJl
Y3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGluIHZpZXcgdW5pdHMuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOiAgQWRkIHN0dWIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld1JlY3RGb3JTZWxl
Y3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3KTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVu
dSk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbik6IFVwZGF0ZSB0aGUgaGl0IHRlc3QgaW5m
b3JtYXRpb24KKyAgICAgICAgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGxvb2t1cCBjb250ZW50
LCBhbmQgbWFyayB0aGUgcmVzdWx0IGFzIGEgdGV4dCBub2RlIChpZgorICAgICAgICBhcHByb3By
aWF0ZSkuCisKIDIwMTUtMDQtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gV2ViS2l0IHNlcnZpY2VzIHNob3VsZCBpbmhlcml0IGVudmlyb25t
ZW50IHZhcmlhYmxlcyBmb3IgaG9tZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDgg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwVGV4dEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBQREZTZWxlY3Rpb24q
KiwgTlNEaWN0aW9uYXJ5KiopIGNvbnN0ICB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpZXdSZWN0Rm9yU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAq
KSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoKTsgfQogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdl
YkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSA9IDA7CkBAIC0yODIs
OSArMjg0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmlu
ZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpIGNvbnN0ID0gMDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0
VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioqLCBOU0RpY3Rpb25hcnkqKikgY29uc3Qg
PSAwOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0
eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6QXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAkocmV2aXNpb24gMTgzMTkz
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0
SW5wdXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExh
eWVySG9zdGluZ01vZGUpIG92ZXJyaWRlOwotICAgIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBE
RlNlbGVjdGlvbioqLCBOU0RpY3Rpb25hcnkqKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JD
aGFuZ2VkKGZsb2F0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE4MzE5MykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxNyw2ICsxMDE3LDE0IEBAIFN0cmluZyBQbHVnaW5WaWV3Ojpsb29rdXBUZXh0QXRM
b2NhdGlvbigKIAogICAgIHJldHVybiBtX3BsdWdpbi0+bG9va3VwVGV4dEF0TG9jYXRpb24ocG9p
bnQsIGRhdGEsIHNlbGVjdGlvbiwgb3B0aW9ucyk7CiB9CisKK0Zsb2F0UmVjdCBQbHVnaW5WaWV3
Ojp2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbikKK3sKKyAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJldHVybiBGbG9hdFJl
Y3QoKTsKKyAgICAKKyAgICByZXR1cm4gbV9wbHVnaW4tPnZpZXdSZWN0Rm9yU2VsZWN0aW9uKHNl
bGVjdGlvbik7Cit9CiAjZW5kaWYKIAogdm9pZCBQbHVnaW5WaWV3Ojpub3RpZnlXaWRnZXQoV2lk
Z2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBw
ZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW4tPnBkZkRvY3Vt
ZW50Rm9yUHJpbnRpbmcoKTsgfQogICAgIE5TT2JqZWN0ICphY2Nlc3NpYmlsaXR5T2JqZWN0KCkg
Y29uc3Q7CiAgICAgU3RyaW5nIGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uKiosIE5TRGlj
dGlvbmFyeSoqKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlld1JlY3RGb3JTZWxl
Y3Rpb24oUERGU2VsZWN0aW9uICopOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCogcGx1Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5n
ZXQoKTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgJKHJldmlzaW9uIDE4MzE5MykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCB1cGRhdGVQbHVn
aW5MYXllcigpOwotICAgIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioqIHNl
bGVjdGlvbiwgTlNEaWN0aW9uYXJ5KiopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdl
ZChmbG9hdCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgJKHJldmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3MSw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JX
b3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBE
RlNlbGVjdGlvbiAqKiwgTlNEaWN0aW9uYXJ5ICoqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3Qgdmlld1JlY3RGb3JTZWxlY3Rpb24oUERGU2VsZWN0aW9uICopIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dOYXZp
Z2F0aW9uRnJvbURyYWdzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHJl
dmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsNiArMzk1LDcgQEAgLSAodm9pZClw
ZGZMYXllckNvbnRyb2xsZXI6KFBERkxheWVyQ29udAogCiBAaW50ZXJmYWNlIFBERlZpZXdMYXlv
dXQKIC0gKE5TUG9pbnQpY29udmVydFBvaW50OihOU1BvaW50KXBvaW50IHRvUGFnZTooUERGUGFn
ZSAqKXBhZ2UgZm9yU2NhbGVGYWN0b3I6KENHRmxvYXQpc2NhbGVGYWN0b3I7CistIChOU1JlY3Qp
Y29udmVydFJlY3Q6KE5TUmVjdClyZWN0IGZyb21QYWdlOihQREZQYWdlICopIHBhZ2UgZm9yU2Nh
bGVGYWN0b3I6KENHRmxvYXQpIHNjYWxlRmFjdG9yOwogLSAoUERGUGFnZSAqKXBhZ2VOZWFyZXN0
UG9pbnQ6KE5TUG9pbnQpcG9pbnQgY3VycmVudFBhZ2U6KFBERlBhZ2UgKiljdXJyZW50UGFnZTsK
IEBlbmQKIApAQCAtMTkzMyw2ICsxOTM0LDM4IEBAIFN0cmluZyBQREZQbHVnaW46Omxvb2t1cFRl
eHRBdExvY2F0aW9uKGMKICAgICByZXR1cm4gbG9va3VwVGV4dDsKIH0KIAorc3RhdGljIE5TUmVj
dCByZWN0SW5WaWV3U3BhY2VGb3JSZWN0SW5MYXlvdXRTcGFjZShQREZMYXllckNvbnRyb2xsZXIq
IHBkZkxheWVyQ29udHJvbGxlciwgTlNSZWN0IGxheW91dFNwYWNlUmVjdCkKK3sKKyAgICBDR1Jl
Y3QgbmV3UmVjdCA9IE5TUmVjdFRvQ0dSZWN0KGxheW91dFNwYWNlUmVjdCk7CisgICAgQ0dGbG9h
dCBzY2FsZUZhY3RvciA9IFtwZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNjYWxlRmFjdG9yXTsK
KyAgICBDR1BvaW50IHNjcm9sbE9mZnNldCA9IFtwZGZMYXllckNvbnRyb2xsZXIgc2Nyb2xsUG9z
aXRpb25dOworCisgICAgc2Nyb2xsT2Zmc2V0LnkgPSBbcGRmTGF5ZXJDb250cm9sbGVyIGNvbnRl
bnRTaXplUmVzcGVjdGluZ1pvb21dLmhlaWdodCAtIE5TUmVjdFRvQ0dSZWN0KFtwZGZMYXllckNv
bnRyb2xsZXIgZnJhbWVdKS5zaXplLmhlaWdodCAtIHNjcm9sbE9mZnNldC55OworCisgICAgbmV3
UmVjdC5vcmlnaW4ueCAqPSBzY2FsZUZhY3RvcjsKKyAgICBuZXdSZWN0Lm9yaWdpbi55ICo9IHNj
YWxlRmFjdG9yOworICAgIG5ld1JlY3Quc2l6ZS53aWR0aCAqPSBzY2FsZUZhY3RvcjsKKyAgICBu
ZXdSZWN0LnNpemUuaGVpZ2h0ICo9IHNjYWxlRmFjdG9yOworCisgICAgbmV3UmVjdC5vcmlnaW4u
eCAtPSBzY3JvbGxPZmZzZXQueDsKKyAgICBuZXdSZWN0Lm9yaWdpbi55IC09IHNjcm9sbE9mZnNl
dC55OworCisgICAgcmV0dXJuIE5TUmVjdEZyb21DR1JlY3QobmV3UmVjdCk7Cit9CisKK1dlYkNv
cmU6OkZsb2F0UmVjdCBQREZQbHVnaW46OnZpZXdSZWN0Rm9yU2VsZWN0aW9uKFBERlNlbGVjdGlv
biAqc2VsZWN0aW9uKSBjb25zdAoreworICAgIFBERlBhZ2UgKmN1cnJlbnRQYWdlID0gW21fcGRm
TGF5ZXJDb250cm9sbGVyIGN1cnJlbnRQYWdlXTsKKyAgICAKKyAgICBOU1JlY3QgcmVjdEluUGFn
ZVNwYWNlID0gW3NlbGVjdGlvbiBib3VuZHNGb3JQYWdlOmN1cnJlbnRQYWdlXTsKKyAgICBOU1Jl
Y3QgcmVjdEluTGF5b3V0U3BhY2UgPSBbW21fcGRmTGF5ZXJDb250cm9sbGVyIGxheW91dF0gY29u
dmVydFJlY3Q6cmVjdEluUGFnZVNwYWNlIGZyb21QYWdlOmN1cnJlbnRQYWdlIGZvclNjYWxlRmFj
dG9yOjEuMF07CisgICAgTlNSZWN0IHJlY3RJblZpZXcgPSByZWN0SW5WaWV3U3BhY2VGb3JSZWN0
SW5MYXlvdXRTcGFjZShtX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSwgcmVjdEluTGF5b3V0U3Bh
Y2UpOworCisgICAgcmVjdEluVmlldy5vcmlnaW4gPSBjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RW
aWV3KEludFBvaW50KHJlY3RJblZpZXcub3JpZ2luKSk7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmxvYXRSZWN0KHJlY3RJblZpZXcpOworfQorCiB2b2lkIFBERlBsdWdpbjo6cGVyZm9ybVdlYlNl
YXJjaChOU1N0cmluZyAqc3RyaW5nKQogewogICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hUaGVXZWIoc3RyaW5nKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE4MzE5
MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTMsNiArMTAxMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBGb3JSYW5nZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OlJhbmdlJiwg
TlNEaWN0aW9uYXJ5ICpvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbik7CiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZv
Rm9yUmFuZ2UoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpSYW5nZSYgcmFuZ2UsIE5T
RGljdGlvbmFyeSAqKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworI2lmIEVOQUJMRShQREZLSVRfUExV
R0lOKQorICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclBERlNl
bGVjdGlvbkluUGx1Z2luVmlldyhQREZTZWxlY3Rpb24gKiwgUGx1Z2luVmlldyYsIE5TRGljdGlv
bmFyeSAqKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uKTsKKyNlbmRpZgogCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRp
bmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGlu
YXRlcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTg2LDYgKzU4Niw0OSBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQ
CiAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CiAKKyNpZiBFTkFCTEUoUERGS0lU
X1BMVUdJTikKK0RpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5m
b0ZvclBERlNlbGVjdGlvbkluUGx1Z2luVmlldyhQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwgUGx1
Z2luVmlldyYgcGx1Z2luVmlldywgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4
dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikK
K3sKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CisgICAgaWYg
KCFzZWxlY3Rpb24uc3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1
cEluZm87CisKKyAgICBOU1JlY3QgcmFuZ2VSZWN0ID0gcGx1Z2luVmlldy52aWV3UmVjdEZvclNl
bGVjdGlvbihzZWxlY3Rpb24pOworCisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBy
YW5nZVJlY3Qub3JpZ2luOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IChDRkRp
Y3Rpb25hcnlSZWYpKm9wdGlvbnM7CisgICAgCisgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpuc0F0
dHJpYnV0ZWRTdHJpbmcgPSBzZWxlY3Rpb24uYXR0cmlidXRlZFN0cmluZzsKKyAgICAKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZz4gc2NhbGVkTlNBdHRyaWJ1dGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOltuc0F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXV0pOworICAgIAorICAgIE5TRm9udE1h
bmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwor
ICAgIAorICAgIFtuc0F0dHJpYnV0ZWRTdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgW25zQXR0cmlidXRlZFN0cmluZyBsZW5ndGhdKSBvcHRpb25zOjAgdXNp
bmdCbG9jazpeKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgTlNSYW5nZSByYW5nZSwgQk9PTCAq
c3RvcCkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gc2NhbGVkQXR0
cmlidXRlcyA9IGFkb3B0TlMoW2F0dHJpYnV0ZXMgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgCisg
ICAgICAgIE5TRm9udCAqZm9udCA9IFtzY2FsZWRBdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU0Zv
bnRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKGZvbnQpIHsKKyAgICAgICAgICAgIGZvbnQg
PSBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6Zm9udCB0b1NpemU6W2ZvbnQgcG9pbnRTaXplXSAq
IHBhZ2VTY2FsZUZhY3RvcigpXTsKKyAgICAgICAgICAgIFtzY2FsZWRBdHRyaWJ1dGVzIHNldE9i
amVjdDpmb250IGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgW3NjYWxlZE5TQXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGVzOnNjYWxl
ZEF0dHJpYnV0ZXMuZ2V0KCkgcmFuZ2U6cmFuZ2VdOworICAgIH1dOworCisgICAgVGV4dEluZGlj
YXRvckRhdGEgZGF0YUZvclNlbGVjdGlvbjsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnNlbGVjdGlv
blJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSByYW5nZVJlY3Q7CisgICAgZGF0YUZvclNlbGVj
dGlvbi50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gcmFuZ2VSZWN0Owor
ICAgIGRhdGFGb3JTZWxlY3Rpb24uY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSAxLjA7CisgICAg
ZGF0YUZvclNlbGVjdGlvbi5wcmVzZW50YXRpb25UcmFuc2l0aW9uID0gcHJlc2VudGF0aW9uVHJh
bnNpdGlvbjsKKyAgICAKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IgPSBk
YXRhRm9yU2VsZWN0aW9uOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmlu
Zy5zdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7CisgICAgCisgICAgcmV0dXJuIGRp
Y3Rpb25hcnlQb3B1cEluZm87Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEZvclJhbmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNl
bnRhdGlvblRyYW5zaXRpb24pCiB7CiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5
UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKGZyYW1lLCByYW5nZSwgJm9w
dGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwpAQCAtMTAxMyw2ICsxMDU2LDE1IEBAIHN0
YXRpYyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGkKICAgICByZXR1cm4gZm9ySW1t
ZWRpYXRlQWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJ
biA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7CiB9CiAKKyNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKK3N0YXRpYyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbiB0ZXh0SW5kaWNhdG9yVHJhbnNpdGlvbkZvckFjdGlvbk1lbnUoYm9vbCBmb3JJ
bW1lZGlhdGVBY3Rpb24sIGJvb2wgZm9yRGF0YURldGVjdG9ycykKK3sKKyAgICBpZiAoZm9yRGF0
YURldGVjdG9ycyAmJiAhZm9ySW1tZWRpYXRlQWN0aW9uKQorICAgICAgICByZXR1cm4gZm9ySW1t
ZWRpYXRlQWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkNyb3Nz
ZmFkZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9z
c2ZhZGU7CisgICAgcmV0dXJuIGZvckltbWVkaWF0ZUFjdGlvbiA/IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4gOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJh
bnNpdGlvbjo6Qm91bmNlOworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlv
bk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WaWV3
Q29vcmRpbmF0ZXMsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uKQogewogICAgIGxheW91dElmTmVl
ZGVkKCk7CkBAIC0xMTE5LDggKzExNzEsMTEgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9u
TWVudUhpdFRlc3RBdAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGFjdGlv
bk1lbnVSZXN1bHQubG9va3VwVGV4dCA9IHNlbGVjdGVkVGV4dDsKKyAgICAgICAgICAgICAgICBh
Y3Rpb25NZW51UmVzdWx0LmlzVGV4dE5vZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGFjdGlv
bk1lbnVSZXN1bHQuaXNTZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYWN0aW9uTWVu
dVJlc3VsdC5hbGxvd3NDb3B5ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGFjdGlvbk1lbnVS
ZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JQREZTZWxl
Y3Rpb25JblBsdWdpblZpZXcoc2VsZWN0aW9uLCAqcGx1Z2luVmlldywgJm9wdGlvbnMsIHRleHRJ
bmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShmb3JJbW1lZGlhdGVBY3Rpb24sIGZhbHNl
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251516</attachid>
            <date>2015-04-23 17:26:39 -0700</date>
            <delta_ts>2015-04-23 21:21:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143952-20150423172534.patch</filename>
            <type>text/plain</type>
            <size>19930</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltbWVkaWF0ZSBhY3Rpb24g
bm90IGZ1bmN0aW9uYWwgZm9yIGVtYmVkZGVkIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTk4NDIzNjU+ICAgICAgICAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBkaWN0aW9uYXJ5IGxvb2t1cCBtZXRob2QgdG8gYWxsb3cgdXMgdG8g
cmV0cmlldmUKKyAgICAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIFBERnMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IFVwZGF0ZWQgdG8gcHJvcGVybHkgaGFu
ZGxlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBMb29rdXAgZW5naW5lIHNlbGVjdHMgYSBzbWFs
bGVyIHJhbmdlIHRoYW4gdGhlIGluaXRpYWwgYXV0b21hdGljCisgICAgICAgIHNlbGVjdGlvbiBw
ZXJmb3JtZWQgb24gY2xpY2tpbmcuCisKIDIwMTUtMDQtMjMgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgYSBidXR0b24gaW4g
cjE4MjkwMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5tbQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRGljdGlvbmFyeUxvb2t1cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDEwICsyMDMsOCBA
QCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvCiAgICAgaWYgKGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rp
b24uc3RyaW5nOwogICAgIAotICAgIE5TSW50ZWdlciBsb29rdXBBZGRlZEJlZm9yZSA9IChleHRy
YWN0ZWRSYW5nZS5sb2NhdGlvbiA8IHJhbmdlVG9QYXNzLmxvY2F0aW9uKSA/IHJhbmdlVG9QYXNz
LmxvY2F0aW9uIC0gZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gOiAwOwotICAgIE5TSW50ZWdlciBs
b29rdXBBZGRlZEFmdGVyID0gMDsKLSAgICBpZiAoKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uICsg
ZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSA+IChyYW5nZVRvUGFzcy5sb2NhdGlvbiArIG9yaWdpbmFs
TGVuZ3RoKSkKLSAgICAgICAgbG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2Nh
dGlvbiArIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBv
cmlnaW5hbExlbmd0aCk7CisgICAgTlNJbnRlZ2VyIGxvb2t1cEFkZGVkQmVmb3JlID0gcmFuZ2VU
b1Bhc3MubG9jYXRpb24gLSBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbjsKKyAgICBOU0ludGVnZXIg
bG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiArIGV4dHJhY3RlZFJh
bmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBvcmlnaW5hbExlbmd0aCk7CiAg
ICAgCiAgICAgW3NlbGVjdGlvbiBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0Omxvb2t1cEFkZGVkQmVm
b3JlXTsKICAgICBbc2VsZWN0aW9uIGV4dGVuZFNlbGVjdGlvbkF0RW5kOmxvb2t1cEFkZGVkQWZ0
ZXJdOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjExKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDQtMjMgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1tZWRpYXRlIGFj
dGlvbiBub3QgZnVuY3Rpb25hbCBmb3IgZW1iZWRkZWQgUERGcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xOTg0MjM2NT4gICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gcmV0cmlldmUgYXBwcm9wcmlhdGUg
ZGljdGlvbmFyeSBsb29rdXAgY29udGVudCBhbmQgdXBkYXRlIHRoZQorICAgICAgICBoaXQgdGVz
dCByZXN1bHQgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGNvbnRlbnQgYW5kIHRoZSBib3VuZGlu
ZyByZWN0IG9mIHRoZQorICAgICAgICBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDogQWRkIHN0dWIuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdEluV2luZG93
U3BhY2VGb3JSZWN0SW5MYXlvdXRTcGFjZSk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8KKyAgICAg
ICAgY29udmVydCBQREYgJ2luIHBhZ2UnIHVuaXRzIHRvIHRoZSBlcXVpdmFsZW50IHZpZXcgdW5p
dHMuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dmlld1JlY3RGb3JTZWxlY3Rpb24pOiBR
dWVyeSBhIHByb3ZpZGVkIFBERlNlbGVjdGlvbiBmb3IKKyAgICAgICAgaXRzIGJvdW5kaW5nIHJl
Y3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGluIHZpZXcgdW5pdHMuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOiAgQWRkIHN0dWIuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dmlld1JlY3RGb3JTZWxl
Y3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3KTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVu
dSk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbik6IFVwZGF0ZSB0aGUgaGl0IHRlc3QgaW5m
b3JtYXRpb24KKyAgICAgICAgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGxvb2t1cCBjb250ZW50
LCBhbmQgbWFyayB0aGUgcmVzdWx0IGFzIGEgdGV4dCBub2RlIChpZgorICAgICAgICBhcHByb3By
aWF0ZSkuCisKIDIwMTUtMDQtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gV2ViS2l0IHNlcnZpY2VzIHNob3VsZCBpbmhlcml0IGVudmlyb25t
ZW50IHZhcmlhYmxlcyBmb3IgaG9tZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMiBA
QCBjbGFzcyBXZWJXaGVlbEV2ZW50OwogICAgIAogY2xhc3MgUGx1Z2luQ29udHJvbGxlcjsKIAor
ZW51bSBQbHVnaW5UeXBlIHsKKyAgICBQbHVnaW5Qcm94eVR5cGUsCisgICAgTmV0c2NhcGVQbHVn
aW5UeXBlLAorICAgIFBERlBsdWdpblR5cGUsCit9OworCiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFt
ZXRlcnMgewpAQCAtMTA1LDYgKzExMSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflBsdWdp
bigpOwogCisgICAgUGx1Z2luVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisK
IHByaXZhdGU6CiAKICAgICAvLyBJbml0aWFsaXplcyB0aGUgcGx1Zy1pbi4gSWYgdGhlIHBsdWct
aW4gZmFpbHMgdG8gaW5pdGlhbGl6ZSB0aGlzIHNob3VsZCByZXR1cm4gZmFsc2UuCkBAIC0yODIs
OSArMjkwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmlu
ZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpIGNvbnN0ID0gMDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0
VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioqLCBOU0RpY3Rpb25hcnkqKikgY29uc3Qg
PSAwOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0
eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6QXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsgfQogCkBAIC0yOTMsMTAgKzI5OCwxNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUGx1Z2luKCk7CiAKKyAgICBQbHVnaW5UeXBlIG1f
dHlwZTsKKwogcHJpdmF0ZToKICAgICBQbHVnaW5Db250cm9sbGVyKiBtX3BsdWdpbkNvbnRyb2xs
ZXI7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19QTFVHSU4oVG9WYWx1ZVR5cGVOYW1lLCBTcGVjaWZpY1BsdWdpblR5cGUp
IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpUb1ZhbHVlVHlwZU5hbWUp
IFwKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJLaXQ6OlBsdWdpbiYgcGx1Z2luKSB7IHJl
dHVybiBwbHVnaW4udHlwZSgpID09IFdlYktpdDo6U3BlY2lmaWNQbHVnaW5UeXBlOyB9IFwKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFBsdWdpbl9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAkocmV2
aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXQoY29uc3Qg
U3RyaW5nJiB0ZXh0SW5wdXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhv
c3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJyaWRlOwotICAgIFN0cmluZyBsb29rdXBU
ZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3Vs
dDo6RGF0YSYsIFBERlNlbGVjdGlvbioqLCBOU0RpY3Rpb25hcnkqKikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRz
U2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSBvdmVycmlkZTsKQEAgLTIzNyw2ICsyMzYsOCBAQCBw
cml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19QTFVHSU4oUGx1Z2luUHJveHksIFBsdWdpblByb3h5VHlwZSkKKwogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjZW5kaWYgLy8gUGx1Z2luUHJveHlfaApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAko
cmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA5LDE2ICsxMDA5LDYgQEAgYm9vbCBQ
bHVnaW5WaWV3OjpleGlzdGluZ1NlbGVjdGlvbkNvbnRhaQogICAgIHJldHVybiBtX3BsdWdpbi0+
ZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KHBvaW50KTsKIH0KIAotI2lmIFBMQVRGT1JN
KENPQ09BKQotU3RyaW5nIFBsdWdpblZpZXc6Omxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50LCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBkYXRhLCBQ
REZTZWxlY3Rpb24gKipzZWxlY3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9wbHVnaW4tPmxvb2t1cFRleHRBdExvY2F0aW9uKHBv
aW50LCBkYXRhLCBzZWxlY3Rpb24sIG9wdGlvbnMpOwotfQotI2VuZGlmCi0KIHZvaWQgUGx1Z2lu
Vmlldzo6bm90aWZ5V2lkZ2V0KFdpZGdldE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7CiAg
ICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtODksMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRDb21wbGV4VGV4dElucHV0
KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRleHRJbnB1dCk7CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclBy
aW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW4tPnBkZkRvY3VtZW50Rm9yUHJpbnRpbmco
KTsgfQogICAgIE5TT2JqZWN0ICphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJI
aXRUZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uKiosIE5TRGljdGlvbmFyeSoqKSBjb25z
dDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkVsZW1lbnQuZ2V0KCk7IH0KICAgICBjb25zdCBQ
bHVnaW46OlBhcmFtZXRlcnMmIGluaXRpYWxQYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CisgICAgUGx1Z2luKiBwbHVnaW4oKSBjb25zdCB7IHJldHVybiBtX3BsdWdp
bi5nZXQoKTsgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzOyBub2JvZHkgc2hvdWxkIGhh
dmUgdG8ga25vdyBhYm91dCB0aGUgcGx1Zy1pbiB2aWV3J3MgcmVuZGVyZXIgZXhjZXB0IHRoZSBw
bHVnLWluIHZpZXcgaXRzZWxmLgogICAgIFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJlcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgJKHJldmlzaW9uIDE4
MzE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCB1
cGRhdGVQbHVnaW5MYXllcigpOwotICAgIFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVj
dGlvbioqIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5KiopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFN0cmluZygpOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFj
dG9yQ2hhbmdlZChmbG9hdCkgb3ZlcnJpZGU7CkBAIC00MDEsNiArNDAwLDggQEAgcHVibGljOiAv
LyBOZWVkIHRvIGNhbGwgaXQgaW4gdGhlIE5QTl9HZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19QTFVHSU4oTmV0c2NhcGVQbHVnaW4sIE5ldHNjYXBl
UGx1Z2luVHlwZSkKKwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAj
ZW5kaWYgLy8gTmV0c2NhcGVQbHVnaW5faApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCShyZXZpc2lvbiAxODMxOTMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgc2hvd0Nv
bnRleHRNZW51QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCisgICAgU3RyaW5n
IGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJIaXRU
ZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uICoqLCBOU0RpY3Rpb25hcnkgKiopIGNvbnN0
OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rp
b24gKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1l
Kik7CiAKQEAgLTE3MCw3ICsxNzMsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRTZWxlY3Rp
b25TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29y
ZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgbG9va3VwVGV4dEF0TG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBQREZT
ZWxlY3Rpb24gKiosIE5TRGljdGlvbmFyeSAqKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC0zMDgsNiArMzEwLDggQEAgcHJpdmF0ZToKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUExVR0lOKFBERlBs
dWdpbiwgUERGUGx1Z2luVHlwZSkKKwogI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQog
CiAjZW5kaWYgLy8gUERGUGx1Z2luX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAxODMxOTMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzk1LDYgKzM5NSw3IEBAIC0gKHZvaWQpcGRmTGF5ZXJDb250cm9sbGVyOihQ
REZMYXllckNvbnQKIAogQGludGVyZmFjZSBQREZWaWV3TGF5b3V0CiAtIChOU1BvaW50KWNvbnZl
cnRQb2ludDooTlNQb2ludClwb2ludCB0b1BhZ2U6KFBERlBhZ2UgKilwYWdlIGZvclNjYWxlRmFj
dG9yOihDR0Zsb2F0KXNjYWxlRmFjdG9yOworLSAoTlNSZWN0KWNvbnZlcnRSZWN0OihOU1JlY3Qp
cmVjdCBmcm9tUGFnZTooUERGUGFnZSAqKSBwYWdlIGZvclNjYWxlRmFjdG9yOihDR0Zsb2F0KSBz
Y2FsZUZhY3RvcjsKIC0gKFBERlBhZ2UgKilwYWdlTmVhcmVzdFBvaW50OihOU1BvaW50KXBvaW50
IGN1cnJlbnRQYWdlOihQREZQYWdlICopY3VycmVudFBhZ2U7CiBAZW5kCiAKQEAgLTE5MzMsNiAr
MTkzNCwzOCBAQCBTdHJpbmcgUERGUGx1Z2luOjpsb29rdXBUZXh0QXRMb2NhdGlvbihjCiAgICAg
cmV0dXJuIGxvb2t1cFRleHQ7CiB9CiAKK3N0YXRpYyBOU1JlY3QgcmVjdEluVmlld1NwYWNlRm9y
UmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9sbGVyKiBwZGZMYXllckNvbnRyb2xsZXIs
IE5TUmVjdCBsYXlvdXRTcGFjZVJlY3QpCit7CisgICAgQ0dSZWN0IG5ld1JlY3QgPSBOU1JlY3RU
b0NHUmVjdChsYXlvdXRTcGFjZVJlY3QpOworICAgIENHRmxvYXQgc2NhbGVGYWN0b3IgPSBbcGRm
TGF5ZXJDb250cm9sbGVyIGNvbnRlbnRTY2FsZUZhY3Rvcl07CisgICAgQ0dQb2ludCBzY3JvbGxP
ZmZzZXQgPSBbcGRmTGF5ZXJDb250cm9sbGVyIHNjcm9sbFBvc2l0aW9uXTsKKworICAgIHNjcm9s
bE9mZnNldC55ID0gW3BkZkxheWVyQ29udHJvbGxlciBjb250ZW50U2l6ZVJlc3BlY3Rpbmdab29t
XS5oZWlnaHQgLSBOU1JlY3RUb0NHUmVjdChbcGRmTGF5ZXJDb250cm9sbGVyIGZyYW1lXSkuc2l6
ZS5oZWlnaHQgLSBzY3JvbGxPZmZzZXQueTsKKworICAgIG5ld1JlY3Qub3JpZ2luLnggKj0gc2Nh
bGVGYWN0b3I7CisgICAgbmV3UmVjdC5vcmlnaW4ueSAqPSBzY2FsZUZhY3RvcjsKKyAgICBuZXdS
ZWN0LnNpemUud2lkdGggKj0gc2NhbGVGYWN0b3I7CisgICAgbmV3UmVjdC5zaXplLmhlaWdodCAq
PSBzY2FsZUZhY3RvcjsKKworICAgIG5ld1JlY3Qub3JpZ2luLnggLT0gc2Nyb2xsT2Zmc2V0Lng7
CisgICAgbmV3UmVjdC5vcmlnaW4ueSAtPSBzY3JvbGxPZmZzZXQueTsKKworICAgIHJldHVybiBO
U1JlY3RGcm9tQ0dSZWN0KG5ld1JlY3QpOworfQorCitXZWJDb3JlOjpGbG9hdFJlY3QgUERGUGx1
Z2luOjp2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbikgY29uc3QK
K3sKKyAgICBQREZQYWdlICpjdXJyZW50UGFnZSA9IFttX3BkZkxheWVyQ29udHJvbGxlciBjdXJy
ZW50UGFnZV07CisgICAgCisgICAgTlNSZWN0IHJlY3RJblBhZ2VTcGFjZSA9IFtzZWxlY3Rpb24g
Ym91bmRzRm9yUGFnZTpjdXJyZW50UGFnZV07CisgICAgTlNSZWN0IHJlY3RJbkxheW91dFNwYWNl
ID0gW1ttX3BkZkxheWVyQ29udHJvbGxlciBsYXlvdXRdIGNvbnZlcnRSZWN0OnJlY3RJblBhZ2VT
cGFjZSBmcm9tUGFnZTpjdXJyZW50UGFnZSBmb3JTY2FsZUZhY3RvcjoxLjBdOworICAgIE5TUmVj
dCByZWN0SW5WaWV3ID0gcmVjdEluVmlld1NwYWNlRm9yUmVjdEluTGF5b3V0U3BhY2UobV9wZGZM
YXllckNvbnRyb2xsZXIuZ2V0KCksIHJlY3RJbkxheW91dFNwYWNlKTsKKworICAgIHJlY3RJblZp
ZXcub3JpZ2luID0gY29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyhJbnRQb2ludChyZWN0SW5W
aWV3Lm9yaWdpbikpOworCisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdChyZWN0SW5WaWV3
KTsKK30KKwogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1XZWJTZWFyY2goTlNTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiAr
MTQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYTsKIGNsYXNzIElu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOworY2xhc3MgUERGUGx1Z2luOwogY2xhc3MgUGFnZUJhbm5lcjsKIGNs
YXNzIFBsdWdpblZpZXc7CiBjbGFzcyBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOwpAQCAt
MTAxMyw2ICsxMDE0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEZvclJhbmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6UmFuZ2UmLCBOU0RpY3Rpb25hcnkg
Km9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsK
ICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShXZWJD
b3JlOjpGcmFtZSogZnJhbWUsIFdlYkNvcmU6OlJhbmdlJiByYW5nZSwgTlNEaWN0aW9uYXJ5ICoq
b3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJl
c2VudGF0aW9uVHJhbnNpdGlvbik7CisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisgICAgRGlj
dGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVn
aW5WaWV3KFBERlNlbGVjdGlvbiAqLCBQREZQbHVnaW4mLCBOU0RpY3Rpb25hcnkgKipvcHRpb25z
LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisjZW5kaWYK
IAogICAgIHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuaCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKKyNpbXBvcnQgIlBERlBsdWdpbi5o
IgogI2ltcG9ydCAiUGFnZUJhbm5lci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgogI2ltcG9y
dCAiUHJpbnRJbmZvLmgiCkBAIC01ODYsNiArNTg3LDQ5IEBAIERpY3Rpb25hcnlQb3B1cEluZm8g
V2ViUGFnZTo6ZGljdGlvbmFyeVAKICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKIH0K
IAorI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdl
OjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3KFBERlNlbGVj
dGlvbiAqc2VsZWN0aW9uLCBQREZQbHVnaW4mIHBkZlBsdWdpbiwgTlNEaWN0aW9uYXJ5ICoqb3B0
aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbikKK3sKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQ
b3B1cEluZm87CisgICAgaWYgKCFzZWxlY3Rpb24uc3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CisKKyAgICBOU1JlY3QgcmFuZ2VSZWN0ID0gcGRmUGx1
Z2luLnZpZXdSZWN0Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CisKKyAgICBkaWN0aW9uYXJ5UG9w
dXBJbmZvLm9yaWdpbiA9IHJhbmdlUmVjdC5vcmlnaW47CisgICAgZGljdGlvbmFyeVBvcHVwSW5m
by5vcHRpb25zID0gKENGRGljdGlvbmFyeVJlZikqb3B0aW9uczsKKyAgICAKKyAgICBOU0F0dHJp
YnV0ZWRTdHJpbmcgKm5zQXR0cmlidXRlZFN0cmluZyA9IHNlbGVjdGlvbi5hdHRyaWJ1dGVkU3Ry
aW5nOworICAgIAorICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBzY2Fs
ZWROU0F0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W25zQXR0cmlidXRlZFN0cmluZyBzdHJpbmddXSk7Cisg
ICAgCisgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdlciBzaGFy
ZWRGb250TWFuYWdlcl07CisgICAgCisgICAgW25zQXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVB
dHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbbnNBdHRyaWJ1dGVkU3RyaW5nIGxlbmd0
aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBOU1Jh
bmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBzY2FsZWRBdHRyaWJ1dGVzID0gYWRvcHROUyhbYXR0cmlidXRlcyBtdXRhYmxlQ29w
eV0pOworICAgICAgICAKKyAgICAgICAgTlNGb250ICpmb250ID0gW3NjYWxlZEF0dHJpYnV0ZXMg
b2JqZWN0Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBpZiAoZm9udCkgewor
ICAgICAgICAgICAgZm9udCA9IFtmb250TWFuYWdlciBjb252ZXJ0Rm9udDpmb250IHRvU2l6ZTpb
Zm9udCBwb2ludFNpemVdICogcGFnZVNjYWxlRmFjdG9yKCldOworICAgICAgICAgICAgW3NjYWxl
ZEF0dHJpYnV0ZXMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nIGFk
ZEF0dHJpYnV0ZXM6c2NhbGVkQXR0cmlidXRlcy5nZXQoKSByYW5nZTpyYW5nZV07CisgICAgfV07
CisKKyAgICBUZXh0SW5kaWNhdG9yRGF0YSBkYXRhRm9yU2VsZWN0aW9uOworICAgIGRhdGFGb3JT
ZWxlY3Rpb24uc2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IHJhbmdlUmVjdDsK
KyAgICBkYXRhRm9yU2VsZWN0aW9uLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSByYW5nZVJlY3Q7CisgICAgZGF0YUZvclNlbGVjdGlvbi5jb250ZW50SW1hZ2VTY2FsZUZh
Y3RvciA9IDEuMDsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRpb24g
PSBwcmVzZW50YXRpb25UcmFuc2l0aW9uOworICAgIAorICAgIGRpY3Rpb25hcnlQb3B1cEluZm8u
dGV4dEluZGljYXRvciA9IGRhdGFGb3JTZWxlY3Rpb247CisgICAgZGljdGlvbmFyeVBvcHVwSW5m
by5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKKyAg
ICAKKyAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5n
ZSYgcmFuZ2UsIE5TRGljdGlvbmFyeSAqb3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKICAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2Uo
ZnJhbWUsIHJhbmdlLCAmb3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CkBAIC0xMDEz
LDYgKzEwNTcsMTUgQEAgc3RhdGljIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aQog
ICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6RmFkZUluIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkJvdW5jZTsKIH0KIAorI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorc3RhdGljIFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0
aW9uTWVudShib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBmb3JEYXRhRGV0ZWN0b3JzKQor
eworICAgIGlmIChmb3JEYXRhRGV0ZWN0b3JzICYmICFmb3JJbW1lZGlhdGVBY3Rpb24pCisgICAg
ICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Q3Jvc3NmYWRlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246OkJvdW5jZUFuZENyb3NzZmFkZTsKKyAgICByZXR1cm4gZm9ySW1tZWRpYXRlQWN0aW9uID8g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbiA6IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQ
YWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9p
bnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24pCiB7
CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKQEAgLTExMDYsMTEgKzExNTksMTQgQEAgdm9pZCBXZWJQ
YWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdAogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGEg
UERGCiAgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4oKmVsZW1l
bnQpKSB7CiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KCplbGVtZW50KTsKLSAgICAgICAg
aWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSByZWludGVycHJldF9jYXN0PFBsdWdpblZpZXcq
PihwbHVnaW5JbWFnZUVsZW1lbnQucGx1Z2luV2lkZ2V0KCkpKSB7CisgICAgICAgIFBsdWdpblZp
ZXcqIHBsdWdpblZpZXcgPSByZWludGVycHJldF9jYXN0PFBsdWdpblZpZXcqPihwbHVnaW5JbWFn
ZUVsZW1lbnQucGx1Z2luV2lkZ2V0KCkpOworICAgICAgICBQbHVnaW4qIHBsdWdpbiA9IHBsdWdp
blZpZXcgPyBwbHVnaW5WaWV3LT5wbHVnaW4oKSA6IG51bGxwdHI7CisgICAgICAgIGlmIChpczxQ
REZQbHVnaW4+KHBsdWdpbikpIHsKKyAgICAgICAgICAgIFBERlBsdWdpbiogcGRmUHVnaW4gPSBk
b3duY2FzdDxQREZQbHVnaW4+KHBsdWdpbik7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9u
J3QgaGF2ZSBBUEkgdG8gaWRlbnRpZnkgaW1hZ2VzIGluc2lkZSBQREZzIGJhc2VkIG9uIHBvc2l0
aW9uLgogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwogICAgICAgICAg
ICAgUERGU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBuaWw7Ci0gICAgICAgICAgICBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0ID0gcGx1Z2luVmlldy0+bG9va3VwVGV4dEF0TG9jYXRpb24obG9jYXRpb25JbkNv
bnRlbnRDb29yZGluYXRlcywgYWN0aW9uTWVudVJlc3VsdCwgJnNlbGVjdGlvbiwgJm9wdGlvbnMp
OworICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHBkZlB1Z2luLT5sb29rdXBUZXh0
QXRMb2NhdGlvbihsb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzLCBhY3Rpb25NZW51UmVzdWx0
LCAmc2VsZWN0aW9uLCAmb3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+ZG9jdW1lbnQoKS5pc1Bs
dWdpbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUoMTQ0MDMwKTog
Rm9jdXMgZG9lcyBub3Qgc2VlbSB0byBnZXQgc2V0IHRvIHRoZSBQREYgd2hlbiBpbnZva2luZyB0
aGUgbWVudS4KQEAgLTExMTksOCArMTE3NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rp
b25NZW51SGl0VGVzdEF0CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5sb29rdXBUZXh0ID0gc2VsZWN0ZWRUZXh0OworICAgICAgICAgICAgICAg
IGFjdGlvbk1lbnVSZXN1bHQuaXNUZXh0Tm9kZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBhY3Rpb25N
ZW51UmVzdWx0LmFsbG93c0NvcHkgPSB0cnVlOworCisgICAgICAgICAgICAgICAgYWN0aW9uTWVu
dVJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclBERlNl
bGVjdGlvbkluUGx1Z2luVmlldyhzZWxlY3Rpb24sICpwZGZQdWdpbiwgJm9wdGlvbnMsIHRleHRJ
bmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShmb3JJbW1lZGlhdGVBY3Rpb24sIGZhbHNl
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251534</attachid>
            <date>2015-04-23 21:22:03 -0700</date>
            <delta_ts>2015-04-24 11:26:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143952-20150423212058.patch</filename>
            <type>text/plain</type>
            <size>22276</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltbWVkaWF0ZSBhY3Rpb24g
bm90IGZ1bmN0aW9uYWwgZm9yIGVtYmVkZGVkIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTk4NDIzNjU+ICAgICAgICAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBkaWN0aW9uYXJ5IGxvb2t1cCBtZXRob2QgdG8gYWxsb3cgdXMgdG8g
cmV0cmlldmUKKyAgICAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIFBERnMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IFVwZGF0ZWQgdG8gcHJvcGVybHkgaGFu
ZGxlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBMb29rdXAgZW5naW5lIHNlbGVjdHMgYSBzbWFs
bGVyIHJhbmdlIHRoYW4gdGhlIGluaXRpYWwgYXV0b21hdGljCisgICAgICAgIHNlbGVjdGlvbiBw
ZXJmb3JtZWQgb24gY2xpY2tpbmcuCisKIDIwMTUtMDQtMjMgIFJvZ2VyIEZvbmcgIDxyb2dlcl9m
b25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgYSBidXR0b24gaW4g
cjE4MjkwMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5tbQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRGljdGlvbmFyeUxvb2t1cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDEwICsyMDMsOCBA
QCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvCiAgICAgaWYgKGV4dHJh
Y3RlZFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgIHJldHVybiBzZWxlY3Rp
b24uc3RyaW5nOwogICAgIAotICAgIE5TSW50ZWdlciBsb29rdXBBZGRlZEJlZm9yZSA9IChleHRy
YWN0ZWRSYW5nZS5sb2NhdGlvbiA8IHJhbmdlVG9QYXNzLmxvY2F0aW9uKSA/IHJhbmdlVG9QYXNz
LmxvY2F0aW9uIC0gZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gOiAwOwotICAgIE5TSW50ZWdlciBs
b29rdXBBZGRlZEFmdGVyID0gMDsKLSAgICBpZiAoKGV4dHJhY3RlZFJhbmdlLmxvY2F0aW9uICsg
ZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKSA+IChyYW5nZVRvUGFzcy5sb2NhdGlvbiArIG9yaWdpbmFs
TGVuZ3RoKSkKLSAgICAgICAgbG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2Nh
dGlvbiArIGV4dHJhY3RlZFJhbmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBv
cmlnaW5hbExlbmd0aCk7CisgICAgTlNJbnRlZ2VyIGxvb2t1cEFkZGVkQmVmb3JlID0gcmFuZ2VU
b1Bhc3MubG9jYXRpb24gLSBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbjsKKyAgICBOU0ludGVnZXIg
bG9va3VwQWRkZWRBZnRlciA9IChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiArIGV4dHJhY3RlZFJh
bmdlLmxlbmd0aCkgLSAocmFuZ2VUb1Bhc3MubG9jYXRpb24gKyBvcmlnaW5hbExlbmd0aCk7CiAg
ICAgCiAgICAgW3NlbGVjdGlvbiBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0Omxvb2t1cEFkZGVkQmVm
b3JlXTsKICAgICBbc2VsZWN0aW9uIGV4dGVuZFNlbGVjdGlvbkF0RW5kOmxvb2t1cEFkZGVkQWZ0
ZXJdOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMjExKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTUtMDQtMjMgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1tZWRpYXRlIGFj
dGlvbiBub3QgZnVuY3Rpb25hbCBmb3IgZW1iZWRkZWQgUERGcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTUyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xOTg0MjM2NT4gICAgICAgIAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgdG8gcmV0cmlldmUgYXBwcm9wcmlhdGUg
ZGljdGlvbmFyeSBsb29rdXAgY29udGVudCBhbmQgdXBkYXRlIHRoZQorICAgICAgICBoaXQgdGVz
dCByZXN1bHQgd2l0aCByZWxldmFudCBkaWN0aW9uYXJ5IGNvbnRlbnQgYW5kIHRoZSBib3VuZGlu
ZyByZWN0IG9mIHRoZQorICAgICAgICBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDogQWRkIHN0dWIuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDogSW5pdGlhbGl6
ZSBwbHVnaW4gdHlwZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpyZWN0SW5XaW5kb3dTcGFjZUZvclJlY3RJbkxheW91dFNwYWNlKTogTmV3
IGhlbHBlciBmdW5jdGlvbiB0bworICAgICAgICBjb252ZXJ0IFBERiAnaW4gcGFnZScgdW5pdHMg
dG8gdGhlIGVxdWl2YWxlbnQgdmlldyB1bml0cy4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
OjpQREZQbHVnaW4pOiBJbml0aWFsaXplIHBsdWdpbiB0eXBlLgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnZpZXdSZWN0Rm9yU2VsZWN0aW9uKTogUXVlcnkgYSBwcm92aWRlZCBQREZTZWxl
Y3Rpb24gZm9yCisgICAgICAgIGl0cyBib3VuZGluZyByZWN0IGFuZCByZXR1cm4gdGhlIHJlc3Vs
dCBpbiB2aWV3IHVuaXRzLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOiBJbml0aWFsaXpl
IHBsdWdpbiB0eXBlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OiBBZGQgc3R1Yi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6
IAorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp2aWV3UmVjdEZvclNlbGVjdGlvbik6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rp
b25hcnlQb3B1cEluZm9Gb3JQREZTZWxlY3Rpb25JblBsdWdpblZpZXcpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6dGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KTogQWRkZWQg
aGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9u
TWVudUhpdFRlc3RBdExvY2F0aW9uKTogVXBkYXRlIHRoZSBoaXQgdGVzdCBpbmZvcm1hdGlvbgor
ICAgICAgICB3aXRoIHJlbGV2YW50IGRpY3Rpb25hcnkgbG9va3VwIGNvbnRlbnQsIGFuZCBtYXJr
IHRoZSByZXN1bHQgYXMgYSB0ZXh0IG5vZGUgKGlmCisgICAgICAgIGFwcHJvcHJpYXRlKS4KKwog
MjAxNS0wNC0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBXZWJLaXQgc2VydmljZXMgc2hvdWxkIGluaGVyaXQgZW52aXJvbm1lbnQgdmFyaWFi
bGVzIGZvciBob21lCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmNwcAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDggKzc2LDkgQEAgYm9v
bCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZwogICAgIHJldHVybiB0cnVlOwog
fQogCi1QbHVnaW46OlBsdWdpbigpCi0gICAgOiBtX3BsdWdpbkNvbnRyb2xsZXIoMCkKK1BsdWdp
bjo6UGx1Z2luKFBsdWdpblR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9w
bHVnaW5Db250cm9sbGVyKDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmgJKHJldmlzaW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQs
MTIgQEAgY2xhc3MgV2ViV2hlZWxFdmVudDsKICAgICAKIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXI7
CiAKK2VudW0gUGx1Z2luVHlwZSB7CisgICAgUGx1Z2luUHJveHlUeXBlLAorICAgIE5ldHNjYXBl
UGx1Z2luVHlwZSwKKyAgICBQREZQbHVnaW5UeXBlLAorfTsKKwogY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQ
YXJhbWV0ZXJzIHsKQEAgLTEwNSw2ICsxMTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Q
bHVnaW4oKTsKIAorICAgIFBsdWdpblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQorCiBwcml2YXRlOgogCiAgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIHBsdWctaW4uIElmIHRoZSBw
bHVnLWluIGZhaWxzIHRvIGluaXRpYWxpemUgdGhpcyBzaG91bGQgcmV0dXJuIGZhbHNlLgpAQCAt
MjgyLDE2ICsyOTAsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlv
blN0cmluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JX
b3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFs
IFN0cmluZyBsb29rdXBUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIFBERlNlbGVjdGlvbioqLCBOU0RpY3Rpb25hcnkqKikg
Y29uc3QgPSAwOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVB
Y3Rpdml0eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29y
ZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIG11dGVkU3RhdGVDaGFuZ2VkKGJvb2wpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGx1Z2lu
KCk7CisgICAgUGx1Z2luKFBsdWdpblR5cGUpOworCisgICAgUGx1Z2luVHlwZSBtX3R5cGU7CiAK
IHByaXZhdGU6CiAgICAgUGx1Z2luQ29udHJvbGxlciogbV9wbHVnaW5Db250cm9sbGVyOwpAQCAt
Mjk5LDQgKzMwNiw5IEBAIHByaXZhdGU6CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAor
I2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1BMVUdJTihUb1ZhbHVlVHlwZU5hbWUsIFNw
ZWNpZmljUGx1Z2luVHlwZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6
OlRvVmFsdWVUeXBlTmFtZSkgXAorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6UGx1
Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZpY1Bs
dWdpblR5cGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8g
UGx1Z2luX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsOCBAQCBQYXNzUmVmUHRyPFBsdWdpblByb3h5PiBQbHVnaW5Qcm94eTo6Y3JlCiB9CiAKIFBs
dWdpblByb3h5OjpQbHVnaW5Qcm94eSh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGJvb2wg
aXNSZXN0YXJ0ZWRQcm9jZXNzKQotICAgIDogbV9wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luUHJv
Y2Vzc1Rva2VuKQorICAgIDogUGx1Z2luKFBsdWdpblByb3h5VHlwZSkKKyAgICAsIG1fcGx1Z2lu
UHJvY2Vzc1Rva2VuKHBsdWdpblByb2Nlc3NUb2tlbikKICAgICAsIG1fcGx1Z2luSW5zdGFuY2VJ
RChnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKSkKICAgICAsIG1fcGx1Z2luQmFja2luZ1N0b3Jl
Q29udGFpbnNWYWxpZERhdGEoZmFsc2UpCiAgICAgLCBtX2lzU3RhcnRlZChmYWxzZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCShy
ZXZpc2lvbiAxODMxOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw2IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dChjb25z
dCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGxvb2t1
cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhJiwgUERGU2VsZWN0aW9uKiosIE5TRGljdGlvbmFyeSoqKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTdHJpbmcoKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJyaWRlOwpAQCAtMjM3LDYgKzIzNiw4IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1BMVUdJTihQbHVnaW5Qcm94eSwgUGx1Z2luUHJveHlUeXBlKQorCiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNlbmRpZiAvLyBQbHVnaW5Qcm94eV9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDksMTYgKzEwMDksNiBAQCBib29s
IFBsdWdpblZpZXc6OmV4aXN0aW5nU2VsZWN0aW9uQ29udGFpCiAgICAgcmV0dXJuIG1fcGx1Z2lu
LT5leGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQocG9pbnQpOwogfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi1TdHJpbmcgUGx1Z2luVmlldzo6bG9va3VwVGV4dEF0TG9jYXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGRhdGEs
IFBERlNlbGVjdGlvbiAqKnNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykgY29uc3QK
LXsKLSAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3BsdWdpbi0+bG9va3VwVGV4dEF0TG9jYXRpb24o
cG9pbnQsIGRhdGEsIHNlbGVjdGlvbiwgb3B0aW9ucyk7Ci19Ci0jZW5kaWYKLQogdm9pZCBQbHVn
aW5WaWV3Ojpub3RpZnlXaWRnZXQoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsK
ICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OSwxMSArODksMTEgQEAgcHVibGljOgogICAgIGJvb2wgc2VuZENvbXBsZXhUZXh0SW5w
dXQodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dElucHV0KTsKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9y
UHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbi0+cGRmRG9jdW1lbnRGb3JQcmludGlu
ZygpOyB9CiAgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdDsKLSAgICBT
dHJpbmcgbG9va3VwVGV4dEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdl
YkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBQREZTZWxlY3Rpb24qKiwgTlNEaWN0aW9uYXJ5KiopIGNv
bnN0OwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsgfQogICAgIGNvbnN0
IFBsdWdpbjo6UGFyYW1ldGVycyYgaW5pdGlhbFBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnM7IH0KKyAgICBQbHVnaW4qIHBsdWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luLmdldCgpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXM7IG5vYm9keSBzaG91bGQg
aGF2ZSB0byBrbm93IGFib3V0IHRoZSBwbHVnLWluIHZpZXcncyByZW5kZXJlciBleGNlcHQgdGhl
IHBsdWctaW4gdmlldyBpdHNlbGYuCiAgICAgV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlbmRlcmVyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlz
aW9uIDE4MzE5MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDggQEAgUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0c2NhcGVQbHVnaQogfQogICAgIAogTmV0c2NhcGVQ
bHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZSkKLSAgICA6IG1fbmV4dFJlcXVlc3RJRCgwKQorICAgIDogUGx1Z2luKE5ldHNj
YXBlUGx1Z2luVHlwZSkKKyAgICAsIG1fbmV4dFJlcXVlc3RJRCgwKQogICAgICwgbV9wbHVnaW5N
b2R1bGUocGx1Z2luTW9kdWxlKQogICAgICwgbV9ucFdpbmRvdygpCiAgICAgLCBtX2lzU3RhcnRl
ZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCShyZXZpc2lvbiAxODMxOTMpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgdXBkYXRlUGx1
Z2luTGF5ZXIoKTsKLSAgICBTdHJpbmcgbG9va3VwVGV4dEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBQREZTZWxlY3Rpb24qKiBz
ZWxlY3Rpb24sIE5TRGljdGlvbmFyeSoqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmco
KTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5n
ZWQoZmxvYXQpIG92ZXJyaWRlOwpAQCAtNDAxLDYgKzQwMCw4IEBAIHB1YmxpYzogLy8gTmVlZCB0
byBjYWxsIGl0IGluIHRoZSBOUE5fR2UKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfUExVR0lOKE5ldHNjYXBlUGx1Z2luLCBOZXRzY2FwZVBsdWdpblR5
cGUpCisKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2VuZGlmIC8v
IE5ldHNjYXBlUGx1Z2luX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDYgKzEwNCw5IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHNob3dDb250ZXh0TWVu
dUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAorICAgIFN0cmluZyBsb29rdXBU
ZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViSGl0VGVzdFJlc3Vs
dDo6RGF0YSYsIFBERlNlbGVjdGlvbiAqKiwgTlNEaWN0aW9uYXJ5ICoqKSBjb25zdDsKKyAgICBX
ZWJDb3JlOjpGbG9hdFJlY3Qgdmlld1JlY3RGb3JTZWxlY3Rpb24oUERGU2VsZWN0aW9uICopIGNv
bnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlBsdWdpbihXZWJGcmFtZSopOwogCkBA
IC0xNzAsNyArMTczLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGV4
aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIGxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgUERGU2VsZWN0aW9u
ICoqLCBOU0RpY3Rpb25hcnkgKiopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZEFsbG93U2NyaXB0aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMzA4LDYgKzMxMCw4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1BMVUdJTihQREZQbHVnaW4sIFBE
RlBsdWdpblR5cGUpCisKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKIAogI2VuZGlm
IC8vIFBERlBsdWdpbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMTgzMTkzKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5NSw2ICszOTUsNyBAQCAtICh2b2lkKXBkZkxheWVyQ29udHJvbGxlcjooUERGTGF5ZXJD
b250CiAKIEBpbnRlcmZhY2UgUERGVmlld0xheW91dAogLSAoTlNQb2ludCljb252ZXJ0UG9pbnQ6
KE5TUG9pbnQpcG9pbnQgdG9QYWdlOihQREZQYWdlICopcGFnZSBmb3JTY2FsZUZhY3RvcjooQ0dG
bG9hdClzY2FsZUZhY3RvcjsKKy0gKE5TUmVjdCljb252ZXJ0UmVjdDooTlNSZWN0KXJlY3QgZnJv
bVBhZ2U6KFBERlBhZ2UgKikgcGFnZSBmb3JTY2FsZUZhY3RvcjooQ0dGbG9hdCkgc2NhbGVGYWN0
b3I7CiAtIChQREZQYWdlICopcGFnZU5lYXJlc3RQb2ludDooTlNQb2ludClwb2ludCBjdXJyZW50
UGFnZTooUERGUGFnZSAqKWN1cnJlbnRQYWdlOwogQGVuZAogCkBAIC01MDQsNyArNTA1LDggQEAg
UGFzc1JlZlB0cjxQREZQbHVnaW4+IFBERlBsdWdpbjo6Y3JlYXRlKAogfQogCiBQREZQbHVnaW46
OlBERlBsdWdpbihXZWJGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgIDog
UGx1Z2luKFBERlBsdWdpblR5cGUpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9pc1Bv
c3RTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3BkZkRvY3VtZW50V2FzTXV0YXRlZChmYWxzZSkKICAg
ICAsIG1fY29udGFpbmVyTGF5ZXIoYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKSkKQEAg
LTE5MzMsNiArMTkzNSwzOCBAQCBTdHJpbmcgUERGUGx1Z2luOjpsb29rdXBUZXh0QXRMb2NhdGlv
bihjCiAgICAgcmV0dXJuIGxvb2t1cFRleHQ7CiB9CiAKK3N0YXRpYyBOU1JlY3QgcmVjdEluVmll
d1NwYWNlRm9yUmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9sbGVyKiBwZGZMYXllckNv
bnRyb2xsZXIsIE5TUmVjdCBsYXlvdXRTcGFjZVJlY3QpCit7CisgICAgQ0dSZWN0IG5ld1JlY3Qg
PSBOU1JlY3RUb0NHUmVjdChsYXlvdXRTcGFjZVJlY3QpOworICAgIENHRmxvYXQgc2NhbGVGYWN0
b3IgPSBbcGRmTGF5ZXJDb250cm9sbGVyIGNvbnRlbnRTY2FsZUZhY3Rvcl07CisgICAgQ0dQb2lu
dCBzY3JvbGxPZmZzZXQgPSBbcGRmTGF5ZXJDb250cm9sbGVyIHNjcm9sbFBvc2l0aW9uXTsKKwor
ICAgIHNjcm9sbE9mZnNldC55ID0gW3BkZkxheWVyQ29udHJvbGxlciBjb250ZW50U2l6ZVJlc3Bl
Y3Rpbmdab29tXS5oZWlnaHQgLSBOU1JlY3RUb0NHUmVjdChbcGRmTGF5ZXJDb250cm9sbGVyIGZy
YW1lXSkuc2l6ZS5oZWlnaHQgLSBzY3JvbGxPZmZzZXQueTsKKworICAgIG5ld1JlY3Qub3JpZ2lu
LnggKj0gc2NhbGVGYWN0b3I7CisgICAgbmV3UmVjdC5vcmlnaW4ueSAqPSBzY2FsZUZhY3RvcjsK
KyAgICBuZXdSZWN0LnNpemUud2lkdGggKj0gc2NhbGVGYWN0b3I7CisgICAgbmV3UmVjdC5zaXpl
LmhlaWdodCAqPSBzY2FsZUZhY3RvcjsKKworICAgIG5ld1JlY3Qub3JpZ2luLnggLT0gc2Nyb2xs
T2Zmc2V0Lng7CisgICAgbmV3UmVjdC5vcmlnaW4ueSAtPSBzY3JvbGxPZmZzZXQueTsKKworICAg
IHJldHVybiBOU1JlY3RGcm9tQ0dSZWN0KG5ld1JlY3QpOworfQorCitXZWJDb3JlOjpGbG9hdFJl
Y3QgUERGUGx1Z2luOjp2aWV3UmVjdEZvclNlbGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlv
bikgY29uc3QKK3sKKyAgICBQREZQYWdlICpjdXJyZW50UGFnZSA9IFttX3BkZkxheWVyQ29udHJv
bGxlciBjdXJyZW50UGFnZV07CisgICAgCisgICAgTlNSZWN0IHJlY3RJblBhZ2VTcGFjZSA9IFtz
ZWxlY3Rpb24gYm91bmRzRm9yUGFnZTpjdXJyZW50UGFnZV07CisgICAgTlNSZWN0IHJlY3RJbkxh
eW91dFNwYWNlID0gW1ttX3BkZkxheWVyQ29udHJvbGxlciBsYXlvdXRdIGNvbnZlcnRSZWN0OnJl
Y3RJblBhZ2VTcGFjZSBmcm9tUGFnZTpjdXJyZW50UGFnZSBmb3JTY2FsZUZhY3RvcjoxLjBdOwor
ICAgIE5TUmVjdCByZWN0SW5WaWV3ID0gcmVjdEluVmlld1NwYWNlRm9yUmVjdEluTGF5b3V0U3Bh
Y2UobV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCksIHJlY3RJbkxheW91dFNwYWNlKTsKKworICAg
IHJlY3RJblZpZXcub3JpZ2luID0gY29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyhJbnRQb2lu
dChyZWN0SW5WaWV3Lm9yaWdpbikpOworCisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdChy
ZWN0SW5WaWV3KTsKK30KKwogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1XZWJTZWFyY2goTlNTdHJp
bmcgKnN0cmluZykKIHsKICAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsNiArMTQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYTsK
IGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOworY2xhc3MgUERGUGx1Z2luOwogY2xhc3MgUGFnZUJh
bm5lcjsKIGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvOwpAQCAtMTAxMyw2ICsxMDE0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEZvclJhbmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6UmFuZ2UmLCBOU0Rp
Y3Rpb25hcnkgKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uKTsKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZShXZWJDb3JlOjpGcmFtZSogZnJhbWUsIFdlYkNvcmU6OlJhbmdlJiByYW5nZSwgTlNEaWN0
aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4p
CisgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0
aW9uSW5QbHVnaW5WaWV3KFBERlNlbGVjdGlvbiAqLCBQREZQbHVnaW4mLCBOU0RpY3Rpb25hcnkg
KipvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbik7
CisjZW5kaWYKIAogICAgIHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVz
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxODMxOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKKyNpbXBvcnQgIlBE
RlBsdWdpbi5oIgogI2ltcG9ydCAiUGFnZUJhbm5lci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5o
IgogI2ltcG9ydCAiUHJpbnRJbmZvLmgiCkBAIC01ODYsNiArNTg3LDQ5IEBAIERpY3Rpb25hcnlQ
b3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVAKICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVw
SW5mbzsKIH0KIAorI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorRGljdGlvbmFyeVBvcHVwSW5m
byBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUERGU2VsZWN0aW9uSW5QbHVnaW5WaWV3
KFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBQREZQbHVnaW4mIHBkZlBsdWdpbiwgTlNEaWN0aW9u
YXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKK3sKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRp
Y3Rpb25hcnlQb3B1cEluZm87CisgICAgaWYgKCFzZWxlY3Rpb24uc3RyaW5nLmxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CisKKyAgICBOU1JlY3QgcmFuZ2VSZWN0
ID0gcGRmUGx1Z2luLnZpZXdSZWN0Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CisKKyAgICBkaWN0
aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbiA9IHJhbmdlUmVjdC5vcmlnaW47CisgICAgZGljdGlvbmFy
eVBvcHVwSW5mby5vcHRpb25zID0gKENGRGljdGlvbmFyeVJlZikqb3B0aW9uczsKKyAgICAKKyAg
ICBOU0F0dHJpYnV0ZWRTdHJpbmcgKm5zQXR0cmlidXRlZFN0cmluZyA9IHNlbGVjdGlvbi5hdHRy
aWJ1dGVkU3RyaW5nOworICAgIAorICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nPiBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W25zQXR0cmlidXRlZFN0cmluZyBzdHJp
bmddXSk7CisgICAgCisgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFu
YWdlciBzaGFyZWRGb250TWFuYWdlcl07CisgICAgCisgICAgW25zQXR0cmlidXRlZFN0cmluZyBl
bnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbbnNBdHRyaWJ1dGVkU3Ry
aW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBzY2FsZWRBdHRyaWJ1dGVzID0gYWRvcHROUyhbYXR0cmlidXRlcyBt
dXRhYmxlQ29weV0pOworICAgICAgICAKKyAgICAgICAgTlNGb250ICpmb250ID0gW3NjYWxlZEF0
dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBpZiAo
Zm9udCkgeworICAgICAgICAgICAgZm9udCA9IFtmb250TWFuYWdlciBjb252ZXJ0Rm9udDpmb250
IHRvU2l6ZTpbZm9udCBwb2ludFNpemVdICogcGFnZVNjYWxlRmFjdG9yKCldOworICAgICAgICAg
ICAgW3NjYWxlZEF0dHJpYnV0ZXMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0
ZU5hbWVdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbc2NhbGVkTlNBdHRyaWJ1dGVk
U3RyaW5nIGFkZEF0dHJpYnV0ZXM6c2NhbGVkQXR0cmlidXRlcy5nZXQoKSByYW5nZTpyYW5nZV07
CisgICAgfV07CisKKyAgICBUZXh0SW5kaWNhdG9yRGF0YSBkYXRhRm9yU2VsZWN0aW9uOworICAg
IGRhdGFGb3JTZWxlY3Rpb24uc2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IHJh
bmdlUmVjdDsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMgPSByYW5nZVJlY3Q7CisgICAgZGF0YUZvclNlbGVjdGlvbi5jb250ZW50SW1h
Z2VTY2FsZUZhY3RvciA9IDEuMDsKKyAgICBkYXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRy
YW5zaXRpb24gPSBwcmVzZW50YXRpb25UcmFuc2l0aW9uOworICAgIAorICAgIGRpY3Rpb25hcnlQ
b3B1cEluZm8udGV4dEluZGljYXRvciA9IGRhdGFGb3JTZWxlY3Rpb247CisgICAgZGljdGlvbmFy
eVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0
cmluZzsKKyAgICAKKyAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKK30KKyNlbmRpZgor
CiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yUmFuZ2UoRnJhbWUqIGZy
YW1lLCBSYW5nZSYgcmFuZ2UsIE5TRGljdGlvbmFyeSAqb3B0aW9ucywgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKICAgICBEaWN0
aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9wdXBJbmZv
Rm9yUmFuZ2UoZnJhbWUsIHJhbmdlLCAmb3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7
CkBAIC0xMDEzLDYgKzEwNTcsMTUgQEAgc3RhdGljIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aQogICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRy
YW5zaXRpb246OkJvdW5jZTsKIH0KIAorI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQorc3RhdGlj
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHRleHRJbmRpY2F0b3JUcmFuc2l0
aW9uRm9yQWN0aW9uTWVudShib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBmb3JEYXRhRGV0
ZWN0b3JzKQoreworICAgIGlmIChmb3JEYXRhRGV0ZWN0b3JzICYmICFmb3JJbW1lZGlhdGVBY3Rp
b24pCisgICAgICAgIHJldHVybiBmb3JJbW1lZGlhdGVBY3Rpb24gPyBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Q3Jvc3NmYWRlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZTsKKyAgICByZXR1cm4gZm9ySW1tZWRpYXRl
QWN0aW9uID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbiA6IFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2U7Cit9CisjZW5kaWYKKwog
dm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6
OkZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29yZGluYXRlcywgYm9vbCBmb3JJbW1lZGlhdGVB
Y3Rpb24pCiB7CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKQEAgLTExMDYsMTEgKzExNTksMTQgQEAg
dm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdAogICAgIC8vIFNlZSBpZiB3
ZSBoYXZlIGEgUERGCiAgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTFBsdWdJbkltYWdlRWxlbWVu
dD4oKmVsZW1lbnQpKSB7CiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbklt
YWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KCplbGVtZW50KTsK
LSAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSByZWludGVycHJldF9jYXN0PFBs
dWdpblZpZXcqPihwbHVnaW5JbWFnZUVsZW1lbnQucGx1Z2luV2lkZ2V0KCkpKSB7CisgICAgICAg
IFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSByZWludGVycHJldF9jYXN0PFBsdWdpblZpZXcqPihw
bHVnaW5JbWFnZUVsZW1lbnQucGx1Z2luV2lkZ2V0KCkpOworICAgICAgICBQbHVnaW4qIHBsdWdp
biA9IHBsdWdpblZpZXcgPyBwbHVnaW5WaWV3LT5wbHVnaW4oKSA6IG51bGxwdHI7CisgICAgICAg
IGlmIChpczxQREZQbHVnaW4+KHBsdWdpbikpIHsKKyAgICAgICAgICAgIFBERlBsdWdpbiogcGRm
UHVnaW4gPSBkb3duY2FzdDxQREZQbHVnaW4+KHBsdWdpbik7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3QgaGF2ZSBBUEkgdG8gaWRlbnRpZnkgaW1hZ2VzIGluc2lkZSBQREZzIGJhc2Vk
IG9uIHBvc2l0aW9uLgogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwog
ICAgICAgICAgICAgUERGU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBuaWw7Ci0gICAgICAgICAgICBT
dHJpbmcgc2VsZWN0ZWRUZXh0ID0gcGx1Z2luVmlldy0+bG9va3VwVGV4dEF0TG9jYXRpb24obG9j
YXRpb25JbkNvbnRlbnRDb29yZGluYXRlcywgYWN0aW9uTWVudVJlc3VsdCwgJnNlbGVjdGlvbiwg
Jm9wdGlvbnMpOworICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHBkZlB1Z2luLT5s
b29rdXBUZXh0QXRMb2NhdGlvbihsb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzLCBhY3Rpb25N
ZW51UmVzdWx0LCAmc2VsZWN0aW9uLCAmb3B0aW9ucyk7CiAgICAgICAgICAgICBpZiAoIXNlbGVj
dGVkVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+ZG9jdW1l
bnQoKS5pc1BsdWdpbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUo
MTQ0MDMwKTogRm9jdXMgZG9lcyBub3Qgc2VlbSB0byBnZXQgc2V0IHRvIHRoZSBQREYgd2hlbiBp
bnZva2luZyB0aGUgbWVudS4KQEAgLTExMTksOCArMTE3NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgYWN0aW9uTWVudVJlc3VsdC5sb29rdXBUZXh0ID0gc2VsZWN0ZWRUZXh0OworICAgICAg
ICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuaXNUZXh0Tm9kZSA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgYWN0aW9uTWVudVJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBhY3Rpb25NZW51UmVzdWx0LmFsbG93c0NvcHkgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
YWN0aW9uTWVudVJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5m
b0ZvclBERlNlbGVjdGlvbkluUGx1Z2luVmlldyhzZWxlY3Rpb24sICpwZGZQdWdpbiwgJm9wdGlv
bnMsIHRleHRJbmRpY2F0b3JUcmFuc2l0aW9uRm9yQWN0aW9uTWVudShmb3JJbW1lZGlhdGVBY3Rp
b24sIGZhbHNlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>
<flag name="review"
          id="276317"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>