<?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>210575</bug_id>
          
          <creation_ts>2020-04-15 15:46:56 -0700</creation_ts>
          <short_desc>REGRESSION (r258337): Crash when right clicking on link that uses the system UI font with optimizeLegibility on Mojave</short_desc>
          <delta_ts>2020-04-19 19:32:07 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210729</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642013</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 15:46:56 -0700</bug_when>
    <thetext>REGRESSION (r258337): Crash when right clicking on link that uses the system UI font with optimizeLegibility on Mojave</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642016</commentid>
    <comment_count>1</comment_count>
      <attachid>396583</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 15:51:14 -0700</bug_when>
    <thetext>Created attachment 396583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642017</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 15:51:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/61646717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642022</commentid>
    <comment_count>3</comment_count>
      <attachid>396583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 16:05:13 -0700</bug_when>
    <thetext>Comment on attachment 396583
Patch

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

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:70
&gt; +    if ([object isKindOfClass:[NSFont class]]) {
&gt; +        NSFont *font = static_cast&lt;NSFont *&gt;(object);

Could be slightly more elegant using something like dynamic_cf_cast. Sadly that template has an assertion in it, ASSERT_WITH_SECURITY_IMPLICATION no less, for no reason I can discern given its name.

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:388
&gt; +    auto delegate = adoptNS([[WKSecureCodingFontAttributeNormalizer alloc] init]);
&gt; +    [archiver setDelegate:delegate.get()];

One line version is even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642024</commentid>
    <comment_count>4</comment_count>
      <attachid>396583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 16:05:50 -0700</bug_when>
    <thetext>Comment on attachment 396583
Patch

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

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:73
&gt; +        return [NSFont fontWithDescriptor:WebKit::fontDescriptorWithFontAttributes(font.fontDescriptor.fontAttributes) size:0];

Could we share even more code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642027</commentid>
    <comment_count>5</comment_count>
      <attachid>396583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 16:06:47 -0700</bug_when>
    <thetext>Comment on attachment 396583
Patch

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

&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:73
&gt;&gt; +        return [NSFont fontWithDescriptor:WebKit::fontDescriptorWithFontAttributes(font.fontDescriptor.fontAttributes) size:0];
&gt; 
&gt; Could we share even more code?

Seems all the callers end up calling fontDescriptorWithFontAttributes and then -[NSFont fontWithDescriptor:size:], offering us a refactoring opportunity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642049</commentid>
    <comment_count>6</comment_count>
      <attachid>396583</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-15 17:13:33 -0700</bug_when>
    <thetext>Comment on attachment 396583
Patch

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

&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:70
&gt;&gt; +        NSFont *font = static_cast&lt;NSFont *&gt;(object);
&gt; 
&gt; Could be slightly more elegant using something like dynamic_cf_cast. Sadly that template has an assertion in it, ASSERT_WITH_SECURITY_IMPLICATION no less, for no reason I can discern given its name.

ASSERT_WITH_SECURITY_IMPLICATION is a way to classify Debug assertions so that they could be enabled for fuzzing in Release builds.  (This can be accomplished by defining a pre-processor macro at build time.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642058</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 17:19:36 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; Comment on attachment 396583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396583&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:70
&gt; &gt;&gt; +        NSFont *font = static_cast&lt;NSFont *&gt;(object);
&gt; &gt; 
&gt; &gt; Could be slightly more elegant using something like dynamic_cf_cast. Sadly that template has an assertion in it, ASSERT_WITH_SECURITY_IMPLICATION no less, for no reason I can discern given its name.
&gt; 
&gt; ASSERT_WITH_SECURITY_IMPLICATION is a way to classify Debug assertions so
&gt; that they could be enabled for fuzzing in Release builds.  (This can be
&gt; accomplished by defining a pre-processor macro at build time.)

I think Darin&apos;s point was that it would be nice if it just did the type check and returned nil if it were the wrong type, instead of crashing. There is no actual security implication of &quot;you kindly asked me to carefully convert this thing and it wasn&apos;t actually what you asked so I returned nothing&quot;. That way you could use it to turn those two lines into one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642061</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 17:20:32 -0700</bug_when>
    <thetext>I wonder why the API test is failing. Going to upload a version with logging since it doesn&apos;t fail for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642065</commentid>
    <comment_count>9</comment_count>
      <attachid>396596</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 17:23:02 -0700</bug_when>
    <thetext>Created attachment 396596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642082</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 18:30:57 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 396583 [details]
&gt; Patch
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:388
&gt; &gt; +    auto delegate = adoptNS([[WKSecureCodingFontAttributeNormalizer alloc] init]);
&gt; &gt; +    [archiver setDelegate:delegate.get()];
&gt; 
&gt; One line version is even better.

Wait, no it&apos;s not! What would keep the delegate alive in that case? (Or were you imagining a different one-line than me?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642084</commentid>
    <comment_count>11</comment_count>
      <attachid>396602</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 18:32:18 -0700</bug_when>
    <thetext>Created attachment 396602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642094</commentid>
    <comment_count>12</comment_count>
      <attachid>396583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-15 18:54:32 -0700</bug_when>
    <thetext>Comment on attachment 396583
Patch

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

&gt;&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:388
&gt;&gt;&gt; +    auto delegate = adoptNS([[WKSecureCodingFontAttributeNormalizer alloc] init]);
&gt;&gt;&gt; +    [archiver setDelegate:delegate.get()];
&gt;&gt; 
&gt;&gt; One line version is even better.
&gt; 
&gt; Wait, no it&apos;s not! What would keep the delegate alive in that case? (Or were you imagining a different one-line than me?)

Wow, you are so right, and I was so wrong.

Let me say the opposite: Is the guarantee that an archiver won’t call its delegate after &quot;finishEncoding&quot; super-strong? If not, could make this code more straightforwardly robust by calling [archiver setDelegate:nil] after calling fnishEncoding. Generally seems risky to leave a dangling reference inside the archiver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642129</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 21:02:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 396583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396583&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:388
&gt; &gt;&gt;&gt; +    auto delegate = adoptNS([[WKSecureCodingFontAttributeNormalizer alloc] init]);
&gt; &gt;&gt;&gt; +    [archiver setDelegate:delegate.get()];
&gt; &gt;&gt; 
&gt; &gt;&gt; One line version is even better.
&gt; &gt; 
&gt; &gt; Wait, no it&apos;s not! What would keep the delegate alive in that case? (Or were you imagining a different one-line than me?)
&gt; 
&gt; Wow, you are so right, and I was so wrong.
&gt; 
&gt; Let me say the opposite: Is the guarantee that an archiver won’t call its
&gt; delegate after &quot;finishEncoding&quot; super-strong? If not, could make this code
&gt; more straightforwardly robust by calling [archiver setDelegate:nil] after
&gt; calling fnishEncoding. Generally seems risky to leave a dangling reference
&gt; inside the archiver.

Good point. I&apos;ll clear it out! I do think that -finishEncoding does mean you won&apos;t get called back again, but no reason not to be careful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642132</commentid>
    <comment_count>14</comment_count>
      <attachid>396614</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-15 21:11:15 -0700</bug_when>
    <thetext>Created attachment 396614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642137</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-15 21:34:30 -0700</bug_when>
    <thetext>Committed r260170: &lt;https://trac.webkit.org/changeset/260170&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396614.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642280</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 09:27:09 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; &gt; Could be slightly more elegant using something like dynamic_cf_cast. Sadly that template has an assertion in it, ASSERT_WITH_SECURITY_IMPLICATION no less, for no reason I can discern given its name.
&gt; &gt; 
&gt; &gt; ASSERT_WITH_SECURITY_IMPLICATION is a way to classify Debug assertions so
&gt; &gt; that they could be enabled for fuzzing in Release builds.  (This can be
&gt; &gt; accomplished by defining a pre-processor macro at build time.)
&gt; 
&gt; I think Darin&apos;s point was that it would be nice if it just did the type
&gt; check and returned nil if it were the wrong type, instead of crashing. There
&gt; is no actual security implication of &quot;you kindly asked me to carefully
&gt; convert this thing and it wasn&apos;t actually what you asked so I returned
&gt; nothing&quot;. That way you could use it to turn those two lines into one.

Yes, Tim’s right.

It&apos;s a mistake for dynamic_cf_cast to have any assertion. If dynamic_cf_cast was going to include an assertion then:

1) It should not be named after the C++ language feature dynamic_cast, since that is a check that is used in cases where it can either succeed or fail, and doesn&apos;t include an assertion.

2) It should *never* be used when there&apos;s a legitimate reason the type might not match. We don&apos;t assert things based on hope, but based on knowledge.

3) There&apos;s no obvious reason why we would have both dyanmic_cf_cast and checked_cf_cast. The whole point of checked_cf_cast is that we use it when we know the type and that&apos;s why *it* aborts at runtime if the check is wrong.

Not that the checkin checked_cf_cast is not really what I would call an assertion. It&apos;s a runtime check, important for security. I know we are now using the name RELEASE_ASSERT for these things, but honestly I don&apos;t think that &quot;assertion&quot; is the right name for checks of things the code doesn&apos;t guarantee to be true. Checking for overflow given an &quot;untrusted&quot; argument or for bad parameters passed across process boundaries is extremely important, but not quite the same thing as asserting something we believe the code already guarantees. There is some overlap between the concepts of course, but I think this primarily leads to confusion.

So if we want to preserve the assertions done by dynamic_cf_cast, then:

- Callers of dynamic_cf_cast should be changed to checked_cf_cast to make sure they keep doing checks. (Unless for some reason we prefer assertions that are not included in release builds, in which case we could create a asserting_cf_cast or something like that.)

- Then the assertion in dynamic_cf_cast should be removed and we can start using it in cases like this one.

- Or we could just remove dyanmic_cf_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642303</commentid>
    <comment_count>17</comment_count>
      <attachid>396614</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 10:00:05 -0700</bug_when>
    <thetext>Comment on attachment 396614
Patch

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

Love this version you landed!

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:2893
&gt; +        PlatformFont *font = fontWithAttributes(attributeDictionary, fontSize);

I’d suggest auto here instead of naming the type.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396583</attachid>
            <date>2020-04-15 15:51:14 -0700</date>
            <delta_ts>2020-04-15 17:22:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210575-20200415155113.patch</filename>
            <type>text/plain</type>
            <size>6408</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlMjc5ZmZmMjA4MjIzMDFh
YmI1NmRmZjRiYmI0OGM5ODlhOWJkNTUuLjQyMmNlNjE4YTU3Y2JlYWQ1Njc5MWE1ZWE1NzA2NGYw
OTQ0MzJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDQtMTUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
ODMzNyk6IENyYXNoIHdoZW4gcmlnaHQgY2xpY2tpbmcgb24gbGluayB0aGF0IHVzZXMgdGhlIHN5
c3RlbSBVSSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uIE1vamF2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTc1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTY0NjcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgor
ICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyIGFyY2hpdmVy
OndpbGxFbmNvZGVPYmplY3Q6XSk6CisgICAgICAgIChJUEM6OmVuY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKToKKyAgICAgICAgVGhlIHdvcmthcm91bmQgaW50cm9kdWNlZCBpbiByMjUwNjQwIGFu
ZCByMjUxMDg2IGZvciBhcmNoaXZpbmcgTlNGb250cworICAgICAgICB3aXRoIG9wdGljYWwgc2l6
aW5nIGF0dHJpYnV0ZXMgaXMgc3RpbGwgaW5jb21wbGV0ZSwgd2hpY2ggd2FzIHJlY2VudGx5Cisg
ICAgICAgIHJldmVhbGVkIGJ5IG1ha2luZyBkZWNvZGluZyBmYWlsdXJlcyBtb3JlIGFwcGFyZW50
IChpbiByMjU4MzM3KS4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSB3b3JrYXJvdW5kIHdh
cyBub3QgYXBwbGllZCB0byBmb250cyBlbmNvZGVkIGluc2lkZQorICAgICAgICBOU0F0dHJpYnV0
ZWRTdHJpbmdzLCB3aGljaCBhcmUgZW5jb2RlZCB1c2luZyBhIGtleWVkIGFyY2hpdmVyLi4uIG9u
bHkKKyAgICAgICAgdG8gZm9udHMgZW5jb2RlZCBkaXJlY3RseSB3aXRoIENvcmVJUEMuCisKKyAg
ICAgICAgVXNlIGEgTlNLZXllZEFyY2hpdmVyIGRlbGVnYXRlIHRvIGFwcGx5IG91ciBmaXgtdXAg
dG8gdGhlIG9wdGljYWwgc2l6aW5nCisgICAgICAgIGF0dHJpYnV0ZSB3aGVuIGFueSBOU0ZvbnQg
aXMgYmVpbmcgZW5jb2RlZCwgYW5kIG9ubHkgb24gcGxhdGZvcm1zCisgICAgICAgIHRoYXQgc3Rp
bGwgZXhoaWJpdCB0aGUgYnVnLgorCiAyMDIwLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBh
cHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gZWxlbWVudHMgZG9uJ3QgcmV0dXJuIHRvIHRoZSBj
b3JyZWN0IHBvc2l0aW9uIHdoZW4gZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBmZjc1ZTQ0NTA3
ZWY2NTI0NjBjNzY2ZDA5ZGNiM2YzMmQzNTAzZDNkLi42M2JlOTFiYzYyNDBlMDZkZDcyMzI5OWQ0
YzI3MDE0YjJjOTk1NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Fy
Z3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU3LDYgKzU3LDI5IEBAIHVzaW5nIFBsYXRmb3JtRm9u
dCA9IFVJRm9udDsKIHVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgPSBVSUZvbnREZXNjcmlw
dG9yOwogI2VuZGlmCiAKKyNpZiBIQVZFKE5TRk9OVF9XSVRIX09QVElDQUxfU0laSU5HX0JVRykK
KworQGludGVyZmFjZSBXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyIDogTlNP
YmplY3QgPE5TS2V5ZWRBcmNoaXZlckRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tTZWN1cmVDb2RpbmdGb250QXR0cmlidXRlTm9ybWFsaXplcgorCistIChpZClhcmNoaXZlcjoo
TlNLZXllZEFyY2hpdmVyICopYXJjaGl2ZXIgd2lsbEVuY29kZU9iamVjdDooaWQpb2JqZWN0Cit7
CisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNGb250IGNsYXNzXV0pIHsKKyAgICAg
ICAgTlNGb250ICpmb250ID0gc3RhdGljX2Nhc3Q8TlNGb250ICo+KG9iamVjdCk7CisgICAgICAg
IC8vIFJlY3JlYXRlIGFueSBzZXJpYWxpemVkIGZvbnRzIGFmdGVyIG5vcm1hbGl6aW5nIHRoZQor
ICAgICAgICAvLyBmb250IGF0dHJpYnV0ZXMgdG8gd29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVt
LzUxNjU3ODgwPi4KKyAgICAgICAgcmV0dXJuIFtOU0ZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOldl
YktpdDo6Zm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoZm9udC5mb250RGVzY3JpcHRv
ci5mb250QXR0cmlidXRlcykgc2l6ZTowXTsKKyAgICB9CisKKyAgICByZXR1cm4gb2JqZWN0Owor
fQorCitAZW5kCisKKyNlbmRpZgorCiBuYW1lc3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0zNTksNiArMzgyLDEyIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0
YWluUHRyPGlkPj4gZGVjb2RlTnVtYmVySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHN0YXRp
YyB2b2lkIGVuY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKEVuY29kZXImIGVuY29kZXIsIGlkIDxO
U09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+IG9iamVjdCkKIHsKICAgICBhdXRvIGFyY2hpdmVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVNdKTsKKworI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVHKQorICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTZWN1cmVDb2RpbmdGb250QXR0cmlidXRlTm9y
bWFsaXplciBhbGxvY10gaW5pdF0pOworICAgIFthcmNoaXZlciBzZXREZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisjZW5kaWYKKwogICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6b2JqZWN0IGZv
cktleTpOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXldOwogICAgIFthcmNoaXZlciBmaW5pc2hF
bmNvZGluZ107CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBkZjQ1ZDg4M2NmZTUyZWY4MzU0Mjg5YTBmMWNmNGM3YzJkNmEyZDlkLi5hZjgwYzFi
MzBmZjBkNDdiN2E0ODliNDc0ZGNmMDE3NWFlMGIwMmI5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMTUg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTiAocjI1ODMzNyk6IENyYXNoIHdoZW4gcmlnaHQgY2xpY2tpbmcgb24gbGluayB0aGF0IHVz
ZXMgdGhlIHN5c3RlbSBVSSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uIE1vamF2ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTc1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTY0NjcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3R2V0Q29udGVudHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgQWRk
IGFuIEFQSSB0ZXN0IGVuc3VyaW5nIHRoYXQgd2UgY2FuIGVuY29kZSBhbmQgZGVjb2RlIGEgTlNB
dHRyaWJ1dGVkU3RyaW5nCisgICAgICAgIHRoYXQgaW5jbHVkZXMgYSBzeXN0ZW0tdWkgZm9udCB3
aXRoIG9wdGltaXplTGVnaWJpbGl0eSBvbi4KKwogMjAyMC0wNC0xNSAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFJlbW92ZSBnZW5lcmljIHBh
cmFtZXRlciBzZXJpYWxpemF0aW9uIGZhbGxiYWNrCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbQpp
bmRleCBkNDFlM2YxOTFhYjE2ZDNjZTE0YWY5M2M1OTk1MGY2MjEzMmM0N2U2Li5iZmNkNGRmN2Zj
NWYyZDU0YmMyYzYyODVmZDYyYzYxNzc1ZmU4MTg5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMu
bW0KQEAgLTExMywzICsxMTMsNDQgQEAgVEVTVChXS1dlYlZpZXcsIEdldENvbnRlbnRzU2hvdWxk
UmV0dXJuQXR0cmlidXRlZFN0cmluZykKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWQpOwogfQorCitURVNUKFdLV2ViVmlldywgR2V0Q29udGVudHNXaXRoT3B0aWNhbGx5
U2l6ZWRGb250U2hvdWxkUmV0dXJuQXR0cmlidXRlZFN0cmluZykKK3sKKyAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nZm9udC1mYW1pbHk6
IHN5c3RlbS11aTsgZm9udC13ZWlnaHQ6IDEwMDsgZm9udC1zaXplOiAxNnB4OyB0ZXh0LXJlbmRl
cmluZzogb3B0aW1pemVMZWdpYmlsaXR5Jz5IZWxsbzwvYm9keT4iXTsKKworICAgIF9fYmxvY2sg
Ym9vbCBmaW5pc2hlZCA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgX2dldENvbnRlbnRzQXNBdHRy
aWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nLCBOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRB
dHRyaWJ1dGVLZXksIGlkPiAqZG9jdW1lbnRBdHRyaWJ1dGVzLCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTk9UX05VTEwoYXR0cmlidXRlZFN0cmluZyk7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChkb2N1bWVudEF0dHJpYnV0ZXMpOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisKKyAgICAgICAgX19ibG9jayBzaXplX3QgaSA9IDA7CisgICAgICAgIFthdHRyaWJ1dGVk
U3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIGF0dHJpYnV0
ZWRTdHJpbmcubGVuZ3RoKSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFyeSAqYXR0
cmlidXRlcywgTlNSYW5nZSBhdHRyaWJ1dGVSYW5nZSwgQk9PTCAqc3RvcCkgeworICAgICAgICAg
ICAgYXV0byogc3Vic3RyaW5nID0gW2F0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZTphdHRyaWJ1dGVSYW5nZV07CisKKyAgICAgICAgICAgIGlmICghaSkgeworICAg
ICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShAIkhlbGxvIiwgc3Vic3RyaW5nLnN0cmluZyk7
CisKKyNpZiBVU0UoQVBQS0lUKQorICAgICAgICAgICAgICAgIE5TRm9udCAqc3lzdGVtVUkgPSBb
TlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTYgd2VpZ2h0Ok5TRm9udFdlaWdodFVsdHJhTGlnaHRd
OworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzeXN0ZW1VSSBpc0VxdWFsOmR5bmFtaWNf
b2JqY19jYXN0PE5TRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSldKTsKKyNl
bHNlCisgICAgICAgICAgICAgICAgVUlGb250ICpzeXN0ZW1VSSA9IFtVSUZvbnQgc3lzdGVtRm9u
dE9mU2l6ZToxNiB3ZWlnaHQ6VUlGb250V2VpZ2h0VWx0cmFMaWdodF07CisgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoW3N5c3RlbVVJIGlzRXF1YWw6ZHluYW1pY19vYmpjX2Nhc3Q8VUlGb250
PihhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdKV0pOworI2VuZGlmCisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAg
ICAgICAgKytpOworICAgICAgICB9XTsKKworICAgICAgICBFWFBFQ1RfRVEoaSwgMVVMKTsKKwor
ICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmZpbmlzaGVkKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396596</attachid>
            <date>2020-04-15 17:23:02 -0700</date>
            <delta_ts>2020-04-15 18:32:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210575-20200415172301.patch</filename>
            <type>text/plain</type>
            <size>11911</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlMjc5ZmZmMjA4MjIzMDFh
YmI1NmRmZjRiYmI0OGM5ODlhOWJkNTUuLmRjYTAzNjMxMWQxNzNkZDhmY2JiY2UxYTAyZGQ1MDE0
ZTI0MDZiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
ODMzNyk6IENyYXNoIHdoZW4gcmlnaHQgY2xpY2tpbmcgb24gbGluayB0aGF0IHVzZXMgdGhlIHN5
c3RlbSBVSSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uIE1vamF2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTc1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTY0NjcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgor
ICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyIGFyY2hpdmVy
OndpbGxFbmNvZGVPYmplY3Q6XSk6CisgICAgICAgIChJUEM6OmVuY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKToKKyAgICAgICAgVGhlIHdvcmthcm91bmQgaW50cm9kdWNlZCBpbiByMjUwNjQwIGFu
ZCByMjUxMDg2IGZvciBhcmNoaXZpbmcgTlNGb250cworICAgICAgICB3aXRoIG9wdGljYWwgc2l6
aW5nIGF0dHJpYnV0ZXMgaXMgc3RpbGwgaW5jb21wbGV0ZSwgd2hpY2ggd2FzIHJlY2VudGx5Cisg
ICAgICAgIHJldmVhbGVkIGJ5IG1ha2luZyBkZWNvZGluZyBmYWlsdXJlcyBtb3JlIGFwcGFyZW50
IChpbiByMjU4MzM3KS4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSB3b3JrYXJvdW5kIHdh
cyBub3QgYXBwbGllZCB0byBmb250cyBlbmNvZGVkIGluc2lkZQorICAgICAgICBOU0F0dHJpYnV0
ZWRTdHJpbmdzLCB3aGljaCBhcmUgZW5jb2RlZCB1c2luZyBhIGtleWVkIGFyY2hpdmVyLi4uIG9u
bHkKKyAgICAgICAgdG8gZm9udHMgZW5jb2RlZCBkaXJlY3RseSB3aXRoIENvcmVJUEMuCisKKyAg
ICAgICAgVXNlIGEgTlNLZXllZEFyY2hpdmVyIGRlbGVnYXRlIHRvIGFwcGx5IG91ciBmaXgtdXAg
dG8gdGhlIG9wdGljYWwgc2l6aW5nCisgICAgICAgIGF0dHJpYnV0ZSB3aGVuIGFueSBOU0ZvbnQg
aXMgYmVpbmcgZW5jb2RlZCwgYW5kIG9ubHkgb24gcGxhdGZvcm1zCisgICAgICAgIHRoYXQgc3Rp
bGwgZXhoaWJpdCB0aGUgYnVnLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVs
cGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW06CisgICAg
ICAgIChXZWJLaXQ6OmZvbnRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OmZvbnRE
ZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1
cGRhdGVGb250TWFuYWdlcklmTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBv
cHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1h
Yzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIFJlZmFjdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZv
bnRBdHRyaWJ1dGVzIHRvIGp1c3QgcmV0dXJuIGEgZm9udCBzaW5jZSB0aGF0J3Mgd2hhdCBhbGwg
Y2FsbGVycyBhY3R1YWxseSB3YW50LgorCiAyMDIwLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gZWxlbWVudHMgZG9uJ3QgcmV0dXJuIHRvIHRo
ZSBjb3JyZWN0IHBvc2l0aW9uIHdoZW4gZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBmZjc1ZTQ0
NTA3ZWY2NTI0NjBjNzY2ZDA5ZGNiM2YzMmQzNTAzZDNkLi42NzRlMjgxNGVhODE2NGUwNjQ5MmRh
MTNjNTUxMGE2NjU2YThlNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTUwLDExICs1MCwzMiBAQAogI2lmIFVTRShBUFBL
SVQpCiB1c2luZyBQbGF0Zm9ybUNvbG9yID0gTlNDb2xvcjsKIHVzaW5nIFBsYXRmb3JtRm9udCA9
IE5TRm9udDsKLXVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgPSBOU0ZvbnREZXNjcmlwdG9y
OwogI2Vsc2UKIHVzaW5nIFBsYXRmb3JtQ29sb3IgPSBVSUNvbG9yOwogdXNpbmcgUGxhdGZvcm1G
b250ID0gVUlGb250OwotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2Ny
aXB0b3I7CisjZW5kaWYKKworI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVH
KQorCitAaW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIgOiBO
U09iamVjdCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyCisKKy0gKGlkKWFyY2hpdmVy
OihOU0tleWVkQXJjaGl2ZXIgKilhcmNoaXZlciB3aWxsRW5jb2RlT2JqZWN0OihpZClvYmplY3QK
K3sKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0ZvbnQgY2xhc3NdXSkgeworICAg
ICAgICBOU0ZvbnQgKmZvbnQgPSBzdGF0aWNfY2FzdDxOU0ZvbnQgKj4ob2JqZWN0KTsKKyAgICAg
ICAgLy8gUmVjcmVhdGUgYW55IHNlcmlhbGl6ZWQgZm9udHMgYWZ0ZXIgbm9ybWFsaXppbmcgdGhl
CisgICAgICAgIC8vIGZvbnQgYXR0cmlidXRlcyB0byB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2Js
ZW0vNTE2NTc4ODA+LgorICAgICAgICByZXR1cm4gV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMo
Zm9udC5mb250RGVzY3JpcHRvci5mb250QXR0cmlidXRlcywgMCk7CisgICAgfQorCisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworQGVuZAorCiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC0z
MzEsOCArMzUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUZvbnRJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUGxhdGZvcm1Gb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBXZWJL
aXQ6OmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKGZvbnRBdHRyaWJ1dGVzLmdldCgp
KTsKLSAgICByZXR1cm4geyBbUGxhdGZvcm1Gb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVz
Y3JpcHRvciBzaXplOjBdIH07CisgICAgcmV0dXJuIHsgV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0
ZXMoZm9udEF0dHJpYnV0ZXMuZ2V0KCksIDApIH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKQEAgLTM1OSw2ICszNzksMTEgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRh
aW5QdHI8aWQ+PiBkZWNvZGVOdW1iZXJJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogc3RhdGlj
IHZvaWQgZW5jb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5T
T2JqZWN0LCBOU1NlY3VyZUNvZGluZz4gb2JqZWN0KQogewogICAgIGF1dG8gYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFU10pOworCisjaWYgSEFWRShOU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklOR19CVUcpCisgICAg
W2FyY2hpdmVyIHNldERlbGVnYXRlOmFkb3B0TlMoW1tXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1
dGVOb3JtYWxpemVyIGFsbG9jXSBpbml0XSkuZ2V0KCldOworI2VuZGlmCisKICAgICBbYXJjaGl2
ZXIgZW5jb2RlT2JqZWN0Om9iamVjdCBmb3JLZXk6TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
XTsKICAgICBbYXJjaGl2ZXIgZmluaXNoRW5jb2RpbmddOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5oCmluZGV4IDg5ZTRmNDVmZmY2ODZkZWQwMmI3Njg4
MDBlZWY5ZjExODA1MzJmMDIuLjNmNmY3OTQyYWMxY2JhNjgwMzBiMmNiZTg4OTZhYjM3N2EzNjIx
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5oCkBA
IC0zNiwxMSArMzYsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgVVNFKEFQUEtJVCkK
LXVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgPSBOU0ZvbnREZXNjcmlwdG9yOwordXNpbmcg
UGxhdGZvcm1Gb250ID0gTlNGb250OwogI2Vsc2UKLXVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0
b3IgPSBVSUZvbnREZXNjcmlwdG9yOwordXNpbmcgUGxhdGZvcm1Gb250ID0gVUlGb250OwogI2Vu
ZGlmCiAKLVBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRy
aWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyk7CitQbGF0Zm9ybUZvbnQgKmZvbnRXaXRo
QXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMsIENHRmxvYXQgc2l6ZSk7CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbQppbmRleCAz
NjNkOTU0NTczOGFmOGE5MDYzNjY2YWYwOTEyOWEzMmM5MDlmYjc5Li5hMWVlYmIzMjc0ZGNhMDdk
ZWVjNjhmOTc3NzVjNWIxNWY1MjMwZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQ29yZVRleHRIZWxwZXJzLm1tCkBAIC0yOSw5ICsyOSwxNSBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KIAorI2lmIFVTRShBUFBLSVQpCit1c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gTlNG
b250RGVzY3JpcHRvcjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gVUlG
b250RGVzY3JpcHRvcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGxhdGZvcm1G
b250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzKQorUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC00NCwxMSArNTAsMTQgQEAgUGxhdGZvcm1Gb250RGVzY3JpcHRv
ciAqZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGUKICAgICAgICAgICAgICAgICBbbXV0YWJsZURpY3Rpb25hcnkgc2V0T2JqZWN0OnNpemUgZm9y
S2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtDVEZvbnRPcHRpY2FsU2l6ZUF0dHJpYnV0ZV07CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFtQbGF0Zm9ybUZvbnREZXNjcmlwdG9yIGZvbnRE
ZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOm11dGFibGVEaWN0aW9uYXJ5LmdldCgpXTsKKwor
ICAgIGF1dG8gZGVzY3JpcHRvciA9IFtQbGF0Zm9ybUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlw
dG9yV2l0aEZvbnRBdHRyaWJ1dGVzOm11dGFibGVEaWN0aW9uYXJ5LmdldCgpXTsKICNlbHNlCi0g
ICAgcmV0dXJuIFtQbGF0Zm9ybUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRB
dHRyaWJ1dGVzOmF0dHJpYnV0ZXNdOworICAgIGF1dG8gZGVzY3JpcHRvciA9IFtQbGF0Zm9ybUZv
bnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOmF0dHJpYnV0ZXNd
OwogI2VuZGlmCiAKKyAgICByZXR1cm4gW1BsYXRmb3JtRm9udCBmb250V2l0aERlc2NyaXB0b3I6
ZGVzY3JpcHRvciBzaXplOnNpemVdOworCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
CiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggZGExNmUyNTJmYTE1ZmUwMGRkODk0ZTIzMWQ1MWYxMzRkZjRiZTQ5OC4u
Y2FkMmNkMGIzZjNhMTJmZWUzYTFhZmI1ZmE3OGM3YmZhM2E5MDFiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI4OTAsMTEgKzI4OTAsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVGb250TWFuYWdlcklmTmVlZGVkKCkKICAgICAgICAg
aWYgKCFhdHRyaWJ1dGVEaWN0aW9uYXJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IFBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmRlc2NyaXB0b3IgPSBmb250RGVzY3JpcHRvcldpdGhG
b250QXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5KTsKLSAgICAgICAgaWYgKCFkZXNjcmlw
dG9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIE5TRm9udCAqZm9udCA9IFtOU0Zv
bnQgZm9udFdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTpmb250U2l6ZV07CisgICAgICAg
IFBsYXRmb3JtRm9udCAqZm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9u
YXJ5LCBmb250U2l6ZSk7CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5
TWFjLm1tCmluZGV4IDY1MTI1MjVhMDY5YTA3ZGZjNjE3ZjVmMmM2NzUzMDk4ZWQ1OTIzMGUuLjQy
ZjYwN2Y0ZDA1ZGQ5NzlkNzlkMmRkOTIwMmNiMWQxNjBkNDY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0KQEAgLTEwNiwx
MCArMTA2LDkgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHQKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAotICAgIGlmIChkYXRhLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0
aW9uYXJ5KSB7Ci0gICAgICAgIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9y
ID0gZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoc3RhdGljX2Nhc3Q8TlNEaWN0aW9u
YXJ5ICo+KGRhdGEuZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkpKTsKLSAg
ICAgICAgZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnREZXNjcmlwdG9yIHNp
emU6KChwYWdlU2NhbGVGYWN0b3IgIT0gMSkgPyBbZm9udERlc2NyaXB0b3IgcG9pbnRTaXplXSAq
IHBhZ2VTY2FsZUZhY3RvciA6IDApXTsKLSAgICB9IGVsc2UKKyAgICBpZiAoTlNEaWN0aW9uYXJ5
ICpmb250QXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihkYXRhLmZvbnRJ
bmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpKSkKKyAgICAgICAgZm9udCA9IGZvbnRX
aXRoQXR0cmlidXRlcyhmb250QXR0cmlidXRlcywgKChwYWdlU2NhbGVGYWN0b3IgIT0gMSkgPyBb
Zm9udEF0dHJpYnV0ZXNbTlNGb250U2l6ZUF0dHJpYnV0ZV0gZmxvYXRWYWx1ZV0gKiBwYWdlU2Nh
bGVGYWN0b3IgOiAwKSk7CisgICAgZWxzZQogICAgICAgICBmb250ID0gW05TRm9udCBtZW51Rm9u
dE9mU2l6ZTowXTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGY0NWQ4ODNjZmU1
MmVmODM1NDI4OWEwZjFjZjRjN2MyZDZhMmQ5ZC4uYWY4MGMxYjMwZmYwZDQ3YjdhNDg5YjQ3NGRj
ZjAxNzVhZTBiMDJiOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTE1ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNTgzMzcpOiBDcmFz
aCB3aGVuIHJpZ2h0IGNsaWNraW5nIG9uIGxpbmsgdGhhdCB1c2VzIHRoZSBzeXN0ZW0gVUkgZm9u
dCB3aXRoIG9wdGltaXplTGVnaWJpbGl0eSBvbiBNb2phdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDU3NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjE2NDY3MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRl
bnRzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBlbnN1cmlu
ZyB0aGF0IHdlIGNhbiBlbmNvZGUgYW5kIGRlY29kZSBhIE5TQXR0cmlidXRlZFN0cmluZworICAg
ICAgICB0aGF0IGluY2x1ZGVzIGEgc3lzdGVtLXVpIGZvbnQgd2l0aCBvcHRpbWl6ZUxlZ2liaWxp
dHkgb24uCisKIDIwMjAtMDQtMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBSZW1vdmUgZ2VuZXJpYyBwYXJhbWV0ZXIgc2VyaWFsaXphdGlv
biBmYWxsYmFjawpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMubW0KaW5kZXggZDQxZTNmMTkxYWIxNmQz
Y2UxNGFmOTNjNTk5NTBmNjIxMzJjNDdlNi4uN2RjMDZkMzRjMmRkY2Q2MTI2OWJhYjVhYTVlZTg2
MDQyMTNkMmJhZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tCkBAIC0xMTMsMyArMTEzLDQ4
IEBAIFRFU1QoV0tXZWJWaWV3LCBHZXRDb250ZW50c1Nob3VsZFJldHVybkF0dHJpYnV0ZWRTdHJp
bmcpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKIH0KKworVEVT
VChXS1dlYlZpZXcsIEdldENvbnRlbnRzV2l0aE9wdGljYWxseVNpemVkRm9udFNob3VsZFJldHVy
bkF0dHJpYnV0ZWRTdHJpbmcpCit7CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2ZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7IGZvbnQtd2Vp
Z2h0OiAxMDA7IGZvbnQtc2l6ZTogMTZweDsgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJp
bGl0eSc+SGVsbG88L2JvZHk+Il07CisKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxz
ZTsKKworICAgIFt3ZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywgTlNE
aWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKmRv
Y3VtZW50QXR0cmlidXRlcywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGF0dHJpYnV0ZWRTdHJpbmcpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZG9jdW1lbnRB
dHRyaWJ1dGVzKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIF9fYmxv
Y2sgc2l6ZV90IGkgPSAwOworICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRy
aWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkgb3B0
aW9uczowIHVzaW5nQmxvY2s6XihOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMsIE5TUmFuZ2UgYXR0
cmlidXRlUmFuZ2UsIEJPT0wqIHN0b3ApIHsKKyAgICAgICAgICAgIGF1dG8gKnN1YnN0cmluZyA9
IFthdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6YXR0cmlidXRl
UmFuZ2VdOworCisgICAgICAgICAgICBpZiAoIWkpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJIZWxsbyIsIHN1YnN0cmluZy5zdHJpbmcpOworCisjaWYgVVNFKEFQUEtJVCkK
KyAgICAgICAgICAgICAgICBOU0ZvbnQgKnN5c3RlbVVJID0gW05TRm9udCBzeXN0ZW1Gb250T2ZT
aXplOjE2IHdlaWdodDpOU0ZvbnRXZWlnaHRVbHRyYUxpZ2h0XTsKKyAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbc3lzdGVtVUkgaXNFcXVhbDpkeW5hbWljX29iamNfY2FzdDxOU0ZvbnQ+KGF0
dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pXSk7CisgICAgICAgICAgICAgICAgLy8gTG9n
Z2luZyBmb3IgZGVidWdnaW5nIHRoZSB0ZXN0LgorICAgICAgICAgICAgICAgIE5TTG9nKEAic3lz
dGVtOiAlQCB3azogJUAiLCBzeXN0ZW1VSSwgZHluYW1pY19vYmpjX2Nhc3Q8TlNGb250PihhdHRy
aWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIFVJ
Rm9udCAqc3lzdGVtVUkgPSBbVUlGb250IHN5c3RlbUZvbnRPZlNpemU6MTYgd2VpZ2h0OlVJRm9u
dFdlaWdodFVsdHJhTGlnaHRdOworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzeXN0ZW1V
SSBpc0VxdWFsOmR5bmFtaWNfb2JqY19jYXN0PFVJRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRy
aWJ1dGVOYW1lXSldKTsKKyAgICAgICAgICAgICAgICAvLyBMb2dnaW5nIGZvciBkZWJ1Z2dpbmcg
dGhlIHRlc3QuCisgICAgICAgICAgICAgICAgTlNMb2coQCJzeXN0ZW06ICVAIHdrOiAlQCIsIHN5
c3RlbVVJLCBkeW5hbWljX29iamNfY2FzdDxVSUZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmli
dXRlTmFtZV0pKTsKKyNlbmRpZgorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfV07CisK
KyAgICAgICAgRVhQRUNUX0VRKGksIDFVTCk7CisKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396602</attachid>
            <date>2020-04-15 18:32:18 -0700</date>
            <delta_ts>2020-04-15 21:11:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210575-20200415183217.patch</filename>
            <type>text/plain</type>
            <size>11942</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlMjc5ZmZmMjA4MjIzMDFh
YmI1NmRmZjRiYmI0OGM5ODlhOWJkNTUuLmRjYTAzNjMxMWQxNzNkZDhmY2JiY2UxYTAyZGQ1MDE0
ZTI0MDZiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
ODMzNyk6IENyYXNoIHdoZW4gcmlnaHQgY2xpY2tpbmcgb24gbGluayB0aGF0IHVzZXMgdGhlIHN5
c3RlbSBVSSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uIE1vamF2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTc1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTY0NjcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgor
ICAgICAgICAoLVtXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyIGFyY2hpdmVy
OndpbGxFbmNvZGVPYmplY3Q6XSk6CisgICAgICAgIChJUEM6OmVuY29kZVNlY3VyZUNvZGluZ0lu
dGVybmFsKToKKyAgICAgICAgVGhlIHdvcmthcm91bmQgaW50cm9kdWNlZCBpbiByMjUwNjQwIGFu
ZCByMjUxMDg2IGZvciBhcmNoaXZpbmcgTlNGb250cworICAgICAgICB3aXRoIG9wdGljYWwgc2l6
aW5nIGF0dHJpYnV0ZXMgaXMgc3RpbGwgaW5jb21wbGV0ZSwgd2hpY2ggd2FzIHJlY2VudGx5Cisg
ICAgICAgIHJldmVhbGVkIGJ5IG1ha2luZyBkZWNvZGluZyBmYWlsdXJlcyBtb3JlIGFwcGFyZW50
IChpbiByMjU4MzM3KS4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSB3b3JrYXJvdW5kIHdh
cyBub3QgYXBwbGllZCB0byBmb250cyBlbmNvZGVkIGluc2lkZQorICAgICAgICBOU0F0dHJpYnV0
ZWRTdHJpbmdzLCB3aGljaCBhcmUgZW5jb2RlZCB1c2luZyBhIGtleWVkIGFyY2hpdmVyLi4uIG9u
bHkKKyAgICAgICAgdG8gZm9udHMgZW5jb2RlZCBkaXJlY3RseSB3aXRoIENvcmVJUEMuCisKKyAg
ICAgICAgVXNlIGEgTlNLZXllZEFyY2hpdmVyIGRlbGVnYXRlIHRvIGFwcGx5IG91ciBmaXgtdXAg
dG8gdGhlIG9wdGljYWwgc2l6aW5nCisgICAgICAgIGF0dHJpYnV0ZSB3aGVuIGFueSBOU0ZvbnQg
aXMgYmVpbmcgZW5jb2RlZCwgYW5kIG9ubHkgb24gcGxhdGZvcm1zCisgICAgICAgIHRoYXQgc3Rp
bGwgZXhoaWJpdCB0aGUgYnVnLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVs
cGVycy5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW06CisgICAg
ICAgIChXZWJLaXQ6OmZvbnRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OmZvbnRE
ZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1
cGRhdGVGb250TWFuYWdlcklmTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBv
cHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1h
Yzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIFJlZmFjdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZv
bnRBdHRyaWJ1dGVzIHRvIGp1c3QgcmV0dXJuIGEgZm9udCBzaW5jZSB0aGF0J3Mgd2hhdCBhbGwg
Y2FsbGVycyBhY3R1YWxseSB3YW50LgorCiAyMDIwLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gZWxlbWVudHMgZG9uJ3QgcmV0dXJuIHRvIHRo
ZSBjb3JyZWN0IHBvc2l0aW9uIHdoZW4gZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBmZjc1ZTQ0
NTA3ZWY2NTI0NjBjNzY2ZDA5ZGNiM2YzMmQzNTAzZDNkLi5lNjhhYTcxOTI1MWUxMTViZDVlNzFk
ODZhYWZiMWRlZDIwNTY4M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTUwLDExICs1MCwzMiBAQAogI2lmIFVTRShBUFBL
SVQpCiB1c2luZyBQbGF0Zm9ybUNvbG9yID0gTlNDb2xvcjsKIHVzaW5nIFBsYXRmb3JtRm9udCA9
IE5TRm9udDsKLXVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgPSBOU0ZvbnREZXNjcmlwdG9y
OwogI2Vsc2UKIHVzaW5nIFBsYXRmb3JtQ29sb3IgPSBVSUNvbG9yOwogdXNpbmcgUGxhdGZvcm1G
b250ID0gVUlGb250OwotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2Ny
aXB0b3I7CisjZW5kaWYKKworI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVH
KQorCitAaW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIgOiBO
U09iamVjdCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyCisKKy0gKGlkKWFyY2hpdmVy
OihOU0tleWVkQXJjaGl2ZXIgKilhcmNoaXZlciB3aWxsRW5jb2RlT2JqZWN0OihpZClvYmplY3QK
K3sKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0ZvbnQgY2xhc3NdXSkgeworICAg
ICAgICBOU0ZvbnQgKmZvbnQgPSBzdGF0aWNfY2FzdDxOU0ZvbnQgKj4ob2JqZWN0KTsKKyAgICAg
ICAgLy8gUmVjcmVhdGUgYW55IHNlcmlhbGl6ZWQgZm9udHMgYWZ0ZXIgbm9ybWFsaXppbmcgdGhl
CisgICAgICAgIC8vIGZvbnQgYXR0cmlidXRlcyB0byB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2Js
ZW0vNTE2NTc4ODA+LgorICAgICAgICByZXR1cm4gV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMo
Zm9udC5mb250RGVzY3JpcHRvci5mb250QXR0cmlidXRlcywgMCk7CisgICAgfQorCisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworQGVuZAorCiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC0z
MzEsOCArMzUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUZvbnRJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUGxhdGZvcm1Gb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBXZWJL
aXQ6OmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKGZvbnRBdHRyaWJ1dGVzLmdldCgp
KTsKLSAgICByZXR1cm4geyBbUGxhdGZvcm1Gb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVz
Y3JpcHRvciBzaXplOjBdIH07CisgICAgcmV0dXJuIHsgV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0
ZXMoZm9udEF0dHJpYnV0ZXMuZ2V0KCksIDApIH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKQEAgLTM1OSw2ICszNzksMTIgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRh
aW5QdHI8aWQ+PiBkZWNvZGVOdW1iZXJJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogc3RhdGlj
IHZvaWQgZW5jb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5T
T2JqZWN0LCBOU1NlY3VyZUNvZGluZz4gb2JqZWN0KQogewogICAgIGF1dG8gYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFU10pOworCisjaWYgSEFWRShOU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklOR19CVUcpCisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3Jt
YWxpemVyIGFsbG9jXSBpbml0XSk7CisgICAgW2FyY2hpdmVyIHNldERlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKyNlbmRpZgorCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpvYmplY3QgZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVu
Y29kaW5nXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRl
eHRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMu
aAppbmRleCA4OWU0ZjQ1ZmZmNjg2ZGVkMDJiNzY4ODAwZWVmOWYxMTgwNTMyZjAyLi4zZjZmNzk0
MmFjMWNiYTY4MDMwYjJjYmU4ODk2YWIzNzdhMzYyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaApAQCAtMzYsMTEgKzM2LDExIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogI2lmIFVTRShBUFBLSVQpCi11c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlw
dG9yID0gTlNGb250RGVzY3JpcHRvcjsKK3VzaW5nIFBsYXRmb3JtRm9udCA9IE5TRm9udDsKICNl
bHNlCi11c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gVUlGb250RGVzY3JpcHRvcjsKK3Vz
aW5nIFBsYXRmb3JtRm9udCA9IFVJRm9udDsKICNlbmRpZgogCi1QbGF0Zm9ybUZvbnREZXNjcmlw
dG9yICpmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMpOworUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Db3JlVGV4dEhlbHBlcnMubW0KaW5kZXggMzYzZDk1NDU3MzhhZjhhOTA2MzY2NmFmMDkx
MjlhMzJjOTA5ZmI3OS4uYTFlZWJiMzI3NGRjYTA3ZGVlYzY4Zjk3Nzc1YzViMTVmNTIzMGUxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbQpAQCAt
MjksOSArMjksMTUgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKKyNpZiBVU0UoQVBQS0lUKQordXNp
bmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IE5TRm9udERlc2NyaXB0b3I7CisjZWxzZQordXNp
bmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlw
dG9yV2l0aEZvbnRBdHRyaWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcykKK1BsYXRmb3Jt
Rm9udCAqZm9udFdpdGhBdHRyaWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgQ0dGbG9h
dCBzaXplKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDQsMTEg
KzUwLDE0IEBAIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yV2l0aEZvbnRB
dHRyaWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgW211dGFi
bGVEaWN0aW9uYXJ5IHNldE9iamVjdDpzaXplIGZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1RGb250T3B0aWNhbFNpemVBdHRyaWJ1dGVdOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVy
biBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRl
czptdXRhYmxlRGljdGlvbmFyeS5nZXQoKV07CisKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbUGxh
dGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczptdXRh
YmxlRGljdGlvbmFyeS5nZXQoKV07CiAjZWxzZQotICAgIHJldHVybiBbUGxhdGZvcm1Gb250RGVz
Y3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKKyAg
ICBhdXRvIGRlc2NyaXB0b3IgPSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRv
cldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKICNlbmRpZgogCisgICAgcmV0dXJuIFtQ
bGF0Zm9ybUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTpzaXplXTsKKwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBuaWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGRhMTZlMjUyZmEx
NWZlMDBkZDg5NGUyMzFkNTFmMTM0ZGY0YmU0OTguLmNhZDJjZDBiM2YzYTEyZmVlM2ExYWZiNWZh
NzhjN2JmYTNhOTAxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0yODkwLDExICsyODkwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRl
Rm9udE1hbmFnZXJJZk5lZWRlZCgpCiAgICAgICAgIGlmICghYXR0cmlidXRlRGljdGlvbmFyeSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yICpk
ZXNjcmlwdG9yID0gZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoYXR0cmlidXRlRGlj
dGlvbmFyeSk7Ci0gICAgICAgIGlmICghZGVzY3JpcHRvcikKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpkZXNj
cmlwdG9yIHNpemU6Zm9udFNpemVdOworICAgICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQgPSBmb250
V2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlRGljdGlvbmFyeSwgZm9udFNpemUpOwogICAgICAgICBp
ZiAoIWZvbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQppbmRleCA2NTEyNTI1YTA2OWEw
N2RmYzYxN2Y1ZjJjNjc1MzA5OGVkNTkyMzBlLi40MmY2MDdmNGQwNWRkOTc5ZDc5ZDJkZDkyMDJj
YjFkMTYwZDQ2ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBvcHVwTWVudVByb3h5TWFjLm1tCkBAIC0xMDYsMTAgKzEwNiw5IEBAIHZvaWQgV2ViUG9wdXBN
ZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVj
dGlvbiB0ZXh0CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBpZiAo
ZGF0YS5mb250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeSkgewotICAgICAgICBQbGF0Zm9y
bUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9IGZvbnREZXNjcmlwdG9yV2l0aEZvbnRB
dHRyaWJ1dGVzKHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihkYXRhLmZvbnRJbmZvLmZvbnRB
dHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpKSk7Ci0gICAgICAgIGZvbnQgPSBbTlNGb250IGZvbnRX
aXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOigocGFnZVNjYWxlRmFjdG9yICE9IDEp
ID8gW2ZvbnREZXNjcmlwdG9yIHBvaW50U2l6ZV0gKiBwYWdlU2NhbGVGYWN0b3IgOiAwKV07Ci0g
ICAgfSBlbHNlCisgICAgaWYgKE5TRGljdGlvbmFyeSAqZm9udEF0dHJpYnV0ZXMgPSBzdGF0aWNf
Y2FzdDxOU0RpY3Rpb25hcnkgKj4oZGF0YS5mb250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFy
eS5nZXQoKSkpCisgICAgICAgIGZvbnQgPSBmb250V2l0aEF0dHJpYnV0ZXMoZm9udEF0dHJpYnV0
ZXMsICgocGFnZVNjYWxlRmFjdG9yICE9IDEpID8gW2ZvbnRBdHRyaWJ1dGVzW05TRm9udFNpemVB
dHRyaWJ1dGVdIGZsb2F0VmFsdWVdICogcGFnZVNjYWxlRmFjdG9yIDogMCkpOworICAgIGVsc2UK
ICAgICAgICAgZm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CiAgICAgCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGRmNDVkODgzY2ZlNTJlZjgzNTQyODlhMGYxY2Y0YzdjMmQ2YTJk
OWQuLmFmODBjMWIzMGZmMGQ0N2I3YTQ4OWI0NzRkY2YwMTc1YWUwYjAyYjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMC0wNC0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OIChyMjU4MzM3KTogQ3Jhc2ggd2hlbiByaWdodCBjbGlja2luZyBvbiBs
aW5rIHRoYXQgdXNlcyB0aGUgc3lzdGVtIFVJIGZvbnQgd2l0aCBvcHRpbWl6ZUxlZ2liaWxpdHkg
b24gTW9qYXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTA1NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNjQ2NzE3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICBBZGQgYW4gQVBJIHRlc3QgZW5zdXJpbmcgdGhhdCB3ZSBjYW4gZW5jb2RlIGFuZCBk
ZWNvZGUgYSBOU0F0dHJpYnV0ZWRTdHJpbmcKKyAgICAgICAgdGhhdCBpbmNsdWRlcyBhIHN5c3Rl
bS11aSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uLgorCiAyMDIwLTA0LTE1ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3Zl
IGdlbmVyaWMgcGFyYW1ldGVyIHNlcmlhbGl6YXRpb24gZmFsbGJhY2sKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENv
bnRlbnRzLm1tCmluZGV4IGQ0MWUzZjE5MWFiMTZkM2NlMTRhZjkzYzU5OTUwZjYyMTMyYzQ3ZTYu
LjdkYzA2ZDM0YzJkZGNkNjEyNjliYWI1YWE1ZWU4NjA0MjEzZDJiYWQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdH
ZXRDb250ZW50cy5tbQpAQCAtMTEzLDMgKzExMyw0OCBAQCBURVNUKFdLV2ViVmlldywgR2V0Q29u
dGVudHNTaG91bGRSZXR1cm5BdHRyaWJ1dGVkU3RyaW5nKQogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CisKK1RFU1QoV0tXZWJWaWV3LCBHZXRDb250ZW50c1dp
dGhPcHRpY2FsbHlTaXplZEZvbnRTaG91bGRSZXR1cm5BdHRyaWJ1dGVkU3RyaW5nKQoreworICAg
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdm
b250LWZhbWlseTogc3lzdGVtLXVpOyBmb250LXdlaWdodDogMTAwOyBmb250LXNpemU6IDE2cHg7
IHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHknPkhlbGxvPC9ib2R5PiJdOworCisg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBfZ2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcsIE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJp
bmdEb2N1bWVudEF0dHJpYnV0ZUtleSwgaWQ+ICpkb2N1bWVudEF0dHJpYnV0ZXMsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChhdHRyaWJ1dGVkU3RyaW5nKTsKKyAg
ICAgICAgRVhQRUNUX05PVF9OVUxMKGRvY3VtZW50QXR0cmlidXRlcyk7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICBfX2Jsb2NrIHNpemVfdCBpID0gMDsKKyAgICAgICAg
W2F0dHJpYnV0ZWRTdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzLCBOU1JhbmdlIGF0dHJpYnV0ZVJhbmdlLCBCT09MKiBzdG9wKSB7
CisgICAgICAgICAgICBhdXRvICpzdWJzdHJpbmcgPSBbYXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1
dGVkU3Vic3RyaW5nRnJvbVJhbmdlOmF0dHJpYnV0ZVJhbmdlXTsKKworICAgICAgICAgICAgaWYg
KCFpKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCBzdWJzdHJp
bmcuc3RyaW5nKTsKKworI2lmIFVTRShBUFBLSVQpCisgICAgICAgICAgICAgICAgTlNGb250ICpz
eXN0ZW1VSSA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxNiB3ZWlnaHQ6TlNGb250V2VpZ2h0
VWx0cmFMaWdodF07CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3N5c3RlbVVJIGlzRXF1
YWw6ZHluYW1pY19vYmpjX2Nhc3Q8TlNGb250PihhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5h
bWVdKV0pOworICAgICAgICAgICAgICAgIC8vIExvZ2dpbmcgZm9yIGRlYnVnZ2luZyB0aGUgdGVz
dC4KKyAgICAgICAgICAgICAgICBOU0xvZyhAInN5c3RlbTogJUAgd2s6ICVAIiwgc3lzdGVtVUks
IGR5bmFtaWNfb2JqY19jYXN0PE5TRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1l
XSkpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBVSUZvbnQgKnN5c3RlbVVJID0gW1VJRm9udCBz
eXN0ZW1Gb250T2ZTaXplOjE2IHdlaWdodDpVSUZvbnRXZWlnaHRVbHRyYUxpZ2h0XTsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShbc3lzdGVtVUkgaXNFcXVhbDpkeW5hbWljX29iamNfY2Fz
dDxVSUZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pXSk7CisgICAgICAgICAg
ICAgICAgLy8gTG9nZ2luZyBmb3IgZGVidWdnaW5nIHRoZSB0ZXN0LgorICAgICAgICAgICAgICAg
IE5TTG9nKEAic3lzdGVtOiAlQCB3azogJUAiLCBzeXN0ZW1VSSwgZHluYW1pY19vYmpjX2Nhc3Q8
VUlGb250PihhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdKSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisg
ICAgICAgICAgICArK2k7CisgICAgICAgIH1dOworCisgICAgICAgIEVYUEVDVF9FUShpLCAxVUwp
OworCisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396614</attachid>
            <date>2020-04-15 21:11:15 -0700</date>
            <delta_ts>2020-04-15 21:34:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210575-20200415211114.patch</filename>
            <type>text/plain</type>
            <size>11554</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRlMjc5ZmZmMjA4MjIzMDFh
YmI1NmRmZjRiYmI0OGM5ODlhOWJkNTUuLjM3OTgyMTgyYWNmZjZhZThkZmEwMjM4MWVkNjM0ZTI3
NzUwNDMwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDQtMTUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
ODMzNyk6IENyYXNoIHdoZW4gcmlnaHQgY2xpY2tpbmcgb24gbGluayB0aGF0IHVzZXMgdGhlIHN5
c3RlbSBVSSBmb250IHdpdGggb3B0aW1pemVMZWdpYmlsaXR5IG9uIE1vamF2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNTc1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTY0NjcxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAg
ICAgICAoLVtXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyIGFyY2hpdmVyOndp
bGxFbmNvZGVPYmplY3Q6XSk6CisgICAgICAgIChJUEM6OmVuY29kZVNlY3VyZUNvZGluZ0ludGVy
bmFsKToKKyAgICAgICAgVGhlIHdvcmthcm91bmQgaW50cm9kdWNlZCBpbiByMjUwNjQwIGFuZCBy
MjUxMDg2IGZvciBhcmNoaXZpbmcgTlNGb250cworICAgICAgICB3aXRoIG9wdGljYWwgc2l6aW5n
IGF0dHJpYnV0ZXMgaXMgc3RpbGwgaW5jb21wbGV0ZSwgd2hpY2ggd2FzIHJlY2VudGx5CisgICAg
ICAgIHJldmVhbGVkIGJ5IG1ha2luZyBkZWNvZGluZyBmYWlsdXJlcyBtb3JlIGFwcGFyZW50IChp
biByMjU4MzM3KS4KKworICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSB3b3JrYXJvdW5kIHdhcyBu
b3QgYXBwbGllZCB0byBmb250cyBlbmNvZGVkIGluc2lkZQorICAgICAgICBOU0F0dHJpYnV0ZWRT
dHJpbmdzLCB3aGljaCBhcmUgZW5jb2RlZCB1c2luZyBhIGtleWVkIGFyY2hpdmVyLi4uIG9ubHkK
KyAgICAgICAgdG8gZm9udHMgZW5jb2RlZCBkaXJlY3RseSB3aXRoIENvcmVJUEMuCisKKyAgICAg
ICAgVXNlIGEgTlNLZXllZEFyY2hpdmVyIGRlbGVnYXRlIHRvIGFwcGx5IG91ciBmaXgtdXAgdG8g
dGhlIG9wdGljYWwgc2l6aW5nCisgICAgICAgIGF0dHJpYnV0ZSB3aGVuIGFueSBOU0ZvbnQgaXMg
YmVpbmcgZW5jb2RlZCwgYW5kIG9ubHkgb24gcGxhdGZvcm1zCisgICAgICAgIHRoYXQgc3RpbGwg
ZXhoaWJpdCB0aGUgYnVnLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVy
cy5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW06CisgICAgICAg
IChXZWJLaXQ6OmZvbnRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OmZvbnREZXNj
cmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRh
dGVGb250TWFuYWdlcklmTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBvcHVw
TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6
c2hvd1BvcHVwTWVudSk6CisgICAgICAgIFJlZmFjdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRB
dHRyaWJ1dGVzIHRvIGp1c3QgcmV0dXJuIGEgZm9udCBzaW5jZSB0aGF0J3Mgd2hhdCBhbGwgY2Fs
bGVycyBhY3R1YWxseSB3YW50LgorCiAyMDIwLTA0LTE1ICBQZW5nIExpdSAgPHBlbmcubGl1NkBh
cHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gZWxlbWVudHMgZG9uJ3QgcmV0dXJuIHRvIHRoZSBj
b3JyZWN0IHBvc2l0aW9uIHdoZW4gZXhpdGluZyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBmZjc1ZTQ0NTA3
ZWY2NTI0NjBjNzY2ZDA5ZGNiM2YzMmQzNTAzZDNkLi4yYjA4ZGZkMzVlYWRlNzk4NWQ4ODY1YWM0
MDZhYjM4Y2FkZDViZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Fy
Z3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTUwLDExICs1MCwzMiBAQAogI2lmIFVTRShBUFBLSVQp
CiB1c2luZyBQbGF0Zm9ybUNvbG9yID0gTlNDb2xvcjsKIHVzaW5nIFBsYXRmb3JtRm9udCA9IE5T
Rm9udDsKLXVzaW5nIFBsYXRmb3JtRm9udERlc2NyaXB0b3IgPSBOU0ZvbnREZXNjcmlwdG9yOwog
I2Vsc2UKIHVzaW5nIFBsYXRmb3JtQ29sb3IgPSBVSUNvbG9yOwogdXNpbmcgUGxhdGZvcm1Gb250
ID0gVUlGb250OwotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0
b3I7CisjZW5kaWYKKworI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVHKQor
CitAaW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIgOiBOU09i
amVjdCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxpemVyCisKKy0gKGlkKWFyY2hpdmVyOihO
U0tleWVkQXJjaGl2ZXIgKilhcmNoaXZlciB3aWxsRW5jb2RlT2JqZWN0OihpZClvYmplY3QKK3sK
KyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0ZvbnQgY2xhc3NdXSkgeworICAgICAg
ICBOU0ZvbnQgKmZvbnQgPSBzdGF0aWNfY2FzdDxOU0ZvbnQgKj4ob2JqZWN0KTsKKyAgICAgICAg
Ly8gUmVjcmVhdGUgYW55IHNlcmlhbGl6ZWQgZm9udHMgYWZ0ZXIgbm9ybWFsaXppbmcgdGhlCisg
ICAgICAgIC8vIGZvbnQgYXR0cmlidXRlcyB0byB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0v
NTE2NTc4ODA+LgorICAgICAgICByZXR1cm4gV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMoZm9u
dC5mb250RGVzY3JpcHRvci5mb250QXR0cmlidXRlcywgMCk7CisgICAgfQorCisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworQGVuZAorCiAjZW5kaWYKIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zMzEs
OCArMzUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUZvbnRJbnRl
cm5hbChEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogCi0gICAgUGxhdGZvcm1Gb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBXZWJLaXQ6
OmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKGZvbnRBdHRyaWJ1dGVzLmdldCgpKTsK
LSAgICByZXR1cm4geyBbUGxhdGZvcm1Gb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3Jp
cHRvciBzaXplOjBdIH07CisgICAgcmV0dXJuIHsgV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMo
Zm9udEF0dHJpYnV0ZXMuZ2V0KCksIDApIH07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKQEAgLTM1OSw5ICszNzksMTkgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVOdW1iZXJJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogc3RhdGljIHZv
aWQgZW5jb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgaWQgPE5TT2Jq
ZWN0LCBOU1NlY3VyZUNvZGluZz4gb2JqZWN0KQogewogICAgIGF1dG8gYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
U10pOworCisjaWYgSEFWRShOU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklOR19CVUcpCisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1NlY3VyZUNvZGluZ0ZvbnRBdHRyaWJ1dGVOb3JtYWxp
emVyIGFsbG9jXSBpbml0XSk7CisgICAgW2FyY2hpdmVyIHNldERlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKyNlbmRpZgorCiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpvYmplY3QgZm9yS2V5
Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29k
aW5nXTsKIAorI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVHKQorICAgIFth
cmNoaXZlciBzZXREZWxlZ2F0ZTpuaWxdOworI2VuZGlmCisKICAgICBlbmNvZGUoZW5jb2Rlciwg
KF9fYnJpZGdlIENGRGF0YVJlZilbYXJjaGl2ZXIgZW5jb2RlZERhdGFdKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAppbmRleCA4OWU0ZjQ1ZmZm
Njg2ZGVkMDJiNzY4ODAwZWVmOWYxMTgwNTMyZjAyLi4zZjZmNzk0MmFjMWNiYTY4MDMwYjJjYmU4
ODk2YWIzNzdhMzYyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9D
b3JlVGV4dEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4
dEhlbHBlcnMuaApAQCAtMzYsMTEgKzM2LDExIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lm
IFVTRShBUFBLSVQpCi11c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gTlNGb250RGVzY3Jp
cHRvcjsKK3VzaW5nIFBsYXRmb3JtRm9udCA9IE5TRm9udDsKICNlbHNlCi11c2luZyBQbGF0Zm9y
bUZvbnREZXNjcmlwdG9yID0gVUlGb250RGVzY3JpcHRvcjsKK3VzaW5nIFBsYXRmb3JtRm9udCA9
IFVJRm9udDsKICNlbmRpZgogCi1QbGF0Zm9ybUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRv
cldpdGhGb250QXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMpOworUGxhdGZvcm1G
b250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0
IHNpemUpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3Jl
VGV4dEhlbHBlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBl
cnMubW0KaW5kZXggMzYzZDk1NDU3MzhhZjhhOTA2MzY2NmFmMDkxMjlhMzJjOTA5ZmI3OS4uYTFl
ZWJiMzI3NGRjYTA3ZGVlYzY4Zjk3Nzc1YzViMTVmNTIzMGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbQpAQCAtMjksOSArMjksMTUgQEAKICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CiAKKyNpZiBVU0UoQVBQS0lUKQordXNpbmcgUGxhdGZvcm1Gb250RGVz
Y3JpcHRvciA9IE5TRm9udERlc2NyaXB0b3I7CisjZWxzZQordXNpbmcgUGxhdGZvcm1Gb250RGVz
Y3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVBsYXRmb3JtRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1
dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcykKK1BsYXRmb3JtRm9udCAqZm9udFdpdGhBdHRy
aWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgQ0dGbG9hdCBzaXplKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDQsMTEgKzUwLDE0IEBAIFBsYXRmb3Jt
Rm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgW211dGFibGVEaWN0aW9uYXJ5IHNldE9i
amVjdDpzaXplIGZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrQ1RGb250T3B0aWNhbFNpemVB
dHRyaWJ1dGVdOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBbUGxhdGZvcm1Gb250RGVz
Y3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczptdXRhYmxlRGljdGlvbmFy
eS5nZXQoKV07CisKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbUGxhdGZvcm1Gb250RGVzY3JpcHRv
ciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczptdXRhYmxlRGljdGlvbmFyeS5nZXQo
KV07CiAjZWxzZQotICAgIHJldHVybiBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3Jp
cHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKKyAgICBhdXRvIGRlc2NyaXB0b3Ig
PSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRl
czphdHRyaWJ1dGVzXTsKICNlbmRpZgogCisgICAgcmV0dXJuIFtQbGF0Zm9ybUZvbnQgZm9udFdp
dGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTpzaXplXTsKKwogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGRhMTZlMjUyZmExNWZlMDBkZDg5NGUyMzFkNTFm
MTM0ZGY0YmU0OTguLmNhZDJjZDBiM2YzYTEyZmVlM2ExYWZiNWZhNzhjN2JmYTNhOTAxYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yODkw
LDExICsyODkwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlRm9udE1hbmFnZXJJZk5lZWRl
ZCgpCiAgICAgICAgIGlmICghYXR0cmlidXRlRGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yICpkZXNjcmlwdG9yID0gZm9udERl
c2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXMoYXR0cmlidXRlRGljdGlvbmFyeSk7Ci0gICAgICAg
IGlmICghZGVzY3JpcHRvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yIHNpemU6Zm9udFNp
emVdOworICAgICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQgPSBmb250V2l0aEF0dHJpYnV0ZXMoYXR0
cmlidXRlRGljdGlvbmFyeSwgZm9udFNpemUpOwogICAgICAgICBpZiAoIWZvbnQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQb3B1cE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbQppbmRleCA2NTEyNTI1YTA2OWEwN2RmYzYxN2Y1ZjJjNjc1MzA5
OGVkNTkyMzBlLi40MmY2MDdmNGQwNWRkOTc5ZDc5ZDJkZDkyMDJjYjFkMTYwZDQ2ODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFj
Lm1tCkBAIC0xMDYsMTAgKzEwNiw5IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQ
b3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBpZiAoZGF0YS5mb250SW5mby5mb250
QXR0cmlidXRlRGljdGlvbmFyeSkgewotICAgICAgICBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yICpm
b250RGVzY3JpcHRvciA9IGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzKHN0YXRpY19j
YXN0PE5TRGljdGlvbmFyeSAqPihkYXRhLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5
LmdldCgpKSk7Ci0gICAgICAgIGZvbnQgPSBbTlNGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250
RGVzY3JpcHRvciBzaXplOigocGFnZVNjYWxlRmFjdG9yICE9IDEpID8gW2ZvbnREZXNjcmlwdG9y
IHBvaW50U2l6ZV0gKiBwYWdlU2NhbGVGYWN0b3IgOiAwKV07Ci0gICAgfSBlbHNlCisgICAgaWYg
KE5TRGljdGlvbmFyeSAqZm9udEF0dHJpYnV0ZXMgPSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkg
Kj4oZGF0YS5mb250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKSkpCisgICAgICAg
IGZvbnQgPSBmb250V2l0aEF0dHJpYnV0ZXMoZm9udEF0dHJpYnV0ZXMsICgocGFnZVNjYWxlRmFj
dG9yICE9IDEpID8gW2ZvbnRBdHRyaWJ1dGVzW05TRm9udFNpemVBdHRyaWJ1dGVdIGZsb2F0VmFs
dWVdICogcGFnZVNjYWxlRmFjdG9yIDogMCkpOworICAgIGVsc2UKICAgICAgICAgZm9udCA9IFtO
U0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGRmNDVkODgzY2ZlNTJlZjgzNTQyODlhMGYxY2Y0YzdjMmQ2YTJkOWQuLjVlZWFlZGEwNTg4ZDQ2
M2U0NmEyODNlNzNjZmU0OGEyZTU5ZTJmNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0xNSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChy
MjU4MzM3KTogQ3Jhc2ggd2hlbiByaWdodCBjbGlja2luZyBvbiBsaW5rIHRoYXQgdXNlcyB0aGUg
c3lzdGVtIFVJIGZvbnQgd2l0aCBvcHRpbWl6ZUxlZ2liaWxpdHkgb24gTW9qYXZlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA1NzUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYxNjQ2NzE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdHZXRDb250ZW50cy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBBZGQgYW4gQVBJIHRl
c3QgZW5zdXJpbmcgdGhhdCB3ZSBjYW4gZW5jb2RlIGFuZCBkZWNvZGUgYSBOU0F0dHJpYnV0ZWRT
dHJpbmcKKyAgICAgICAgdGhhdCBpbmNsdWRlcyBhIHN5c3RlbS11aSBmb250IHdpdGggb3B0aW1p
emVMZWdpYmlsaXR5IG9uLgorCiAyMDIwLTA0LTE1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIGdlbmVyaWMgcGFyYW1ldGVyIHNl
cmlhbGl6YXRpb24gZmFsbGJhY2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tCmluZGV4IGQ0MWUz
ZjE5MWFiMTZkM2NlMTRhZjkzYzU5OTUwZjYyMTMyYzQ3ZTYuLjkyZGNiMTk3YmI2YmZhMzAxMTE2
ODI5MjQzYjM2ODVhYjI2NmRhYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbQpAQCAtMTEz
LDMgKzExMyw0MiBAQCBURVNUKFdLV2ViVmlldywgR2V0Q29udGVudHNTaG91bGRSZXR1cm5BdHRy
aWJ1dGVkU3RyaW5nKQogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7
CiB9CisKK1RFU1QoV0tXZWJWaWV3LCBHZXRDb250ZW50c1dpdGhPcHRpY2FsbHlTaXplZEZvbnRT
aG91bGRSZXR1cm5BdHRyaWJ1dGVkU3RyaW5nKQoreworICAgIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdmb250LWZhbWlseTogc3lzdGVtLXVp
OyBmb250LXdlaWdodDogMTAwOyBmb250LXNpemU6IDE2cHg7IHRleHQtcmVuZGVyaW5nOiBvcHRp
bWl6ZUxlZ2liaWxpdHknPkhlbGxvPC9ib2R5PiJdOworCisgICAgX19ibG9jayBib29sIGZpbmlz
aGVkID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmcsIE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdEb2N1bWVudEF0dHJpYnV0ZUtl
eSwgaWQ+ICpkb2N1bWVudEF0dHJpYnV0ZXMsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChhdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGRvY3VtZW50QXR0cmlidXRlcyk7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAg
ICAgICBfX2Jsb2NrIHNpemVfdCBpID0gMDsKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgZW51
bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgYXR0cmlidXRlZFN0cmluZy5s
ZW5ndGgpIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBO
U1JhbmdlIGF0dHJpYnV0ZVJhbmdlLCBCT09MKiBzdG9wKSB7CisgICAgICAgICAgICBhdXRvICpz
dWJzdHJpbmcgPSBbYXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdl
OmF0dHJpYnV0ZVJhbmdlXTsKKworICAgICAgICAgICAgaWYgKCFpKSB7CisgICAgICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiSGVsbG8iLCBzdWJzdHJpbmcuc3RyaW5nKTsKKworI2lmIFVT
RShBUFBLSVQpCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKFtkeW5hbWljX29iamNfY2FzdDxO
U0ZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pIHBvaW50U2l6ZV0sIDE2KTsK
KyNlbHNlCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKFtkeW5hbWljX29iamNfY2FzdDxVSUZv
bnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pIHBvaW50U2l6ZV0sIDE2KTsKKyNl
bmRpZgorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfV07CisKKyAgICAgICAgRVhQRUNU
X0VRKGksIDFVTCk7CisKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>