<?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>219947</bug_id>
          
          <creation_ts>2020-12-16 06:46:51 -0800</creation_ts>
          <short_desc>Make FontCascade::CodePath an enum class</short_desc>
          <delta_ts>2021-01-24 13:59:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>achristensen</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1715100</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 06:46:51 -0800</bug_when>
    <thetext>Make FontCascade::CodePath an enum class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715102</commentid>
    <comment_count>1</comment_count>
      <attachid>416336</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 06:51:49 -0800</bug_when>
    <thetext>Created attachment 416336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715105</commentid>
    <comment_count>2</comment_count>
      <attachid>416338</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 07:22:31 -0800</bug_when>
    <thetext>Created attachment 416338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715189</commentid>
    <comment_count>3</comment_count>
      <attachid>416338</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-16 12:21:56 -0800</bug_when>
    <thetext>Comment on attachment 416338
Patch

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

&gt; Source/WebKit/ChangeLog:11
&gt; +2020-12-16  Rob Buis  &lt;rbuis@igalia.com&gt;

Double change log entry.

&gt; Source/WebCore/platform/graphics/FontCascade.h:-192
&gt; -    enum CodePath { Auto, Simple, Complex, SimpleWithGlyphOverflow };

This should probably remain a nested enum.
FontCascade::CodePath::Auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715234</commentid>
    <comment_count>4</comment_count>
      <attachid>416363</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 14:37:02 -0800</bug_when>
    <thetext>Created attachment 416363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715235</commentid>
    <comment_count>5</comment_count>
      <attachid>416338</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 14:38:17 -0800</bug_when>
    <thetext>Comment on attachment 416338
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:11
&gt;&gt; +2020-12-16  Rob Buis  &lt;rbuis@igalia.com&gt;
&gt; 
&gt; Double change log entry.

Oops! Fixed.

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.h:-192
&gt;&gt; -    enum CodePath { Auto, Simple, Complex, SimpleWithGlyphOverflow };
&gt; 
&gt; This should probably remain a nested enum.
&gt; FontCascade::CodePath::Auto

A with verbose, but ok...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715265</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-16 16:41:42 -0800</bug_when>
    <thetext>Looks like you missed one in Source\WebCore\platform\win\WebCoreTextRenderer.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715331</commentid>
    <comment_count>7</comment_count>
      <attachid>416398</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-16 23:28:14 -0800</bug_when>
    <thetext>Created attachment 416398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715333</commentid>
    <comment_count>8</comment_count>
      <attachid>416400</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-17 00:25:45 -0800</bug_when>
    <thetext>Created attachment 416400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715359</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-17 03:19:10 -0800</bug_when>
    <thetext>Committed r270932: &lt;https://trac.webkit.org/changeset/270932&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416400.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715360</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-17 03:20:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/72420593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715406</commentid>
    <comment_count>11</comment_count>
      <attachid>416400</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-17 09:17:17 -0800</bug_when>
    <thetext>Comment on attachment 416400
Patch

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

&gt; Source/WebCore/platform/graphics/FontCascade.h:-41
&gt; -// &quot;X11/X.h&quot; defines Complex to 0 and conflicts
&gt; -// with Complex value in CodePath enum.
&gt; -#ifdef Complex
&gt; -#undef Complex
&gt; -#endif

This change seems unrelated to the rest. If there is a macro named Complex, then it’s just as much a problem with the enum class as it as with the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715416</commentid>
    <comment_count>12</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-17 09:35:49 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715417</commentid>
    <comment_count>13</comment_count>
      <attachid>416430</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-17 09:35:53 -0800</bug_when>
    <thetext>Created attachment 416430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715418</commentid>
    <comment_count>14</comment_count>
      <attachid>416400</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-17 09:40:03 -0800</bug_when>
    <thetext>Comment on attachment 416400
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.h:-41
&gt;&gt; -#endif
&gt; 
&gt; This change seems unrelated to the rest. If there is a macro named Complex, then it’s just as much a problem with the enum class as it as with the enum.

The change was intentional on my part but wrong :( I prepared the partial revert patch, I am wondering if there is a rename possible for Complex, but I bet others have considered that in the past already, and I guess we need to keep it that way to match ComplexText in some method names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715419</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-17 09:41:51 -0800</bug_when>
    <thetext>If GTK builds successfully without undefining Complex, let&apos;s just keep it removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715421</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-17 09:44:54 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; If GTK builds successfully without undefining Complex, let&apos;s just keep it
&gt; removed.

Exactly, but that can be done even if we don’t do anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715431</commentid>
    <comment_count>17</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-12-17 10:03:12 -0800</bug_when>
    <thetext>FWIW CodePath::Complex prints as 2 on my Linux Ubuntu setup. I wonder if we include X11 headers in any configuration...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721907</commentid>
    <comment_count>18</comment_count>
      <attachid>416430</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-01-24 07:32:52 -0800</bug_when>
    <thetext>Comment on attachment 416430
Patch

I guess we can do this, if we want to remove such code it should probably be a separate bug with a clear title anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721920</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-24 13:58:58 -0800</bug_when>
    <thetext>Committed r271784: &lt;https://trac.webkit.org/changeset/271784&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416430.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416336</attachid>
            <date>2020-12-16 06:51:49 -0800</date>
            <delta_ts>2020-12-16 07:23:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201216155147.patch</filename>
            <type>text/plain</type>
            <size>27667</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZlZTA3NzgzNzgyNTY2
NzFlMjMwOWY2M2YzMTZkOWMyYWFkMzMyNy4uYTZiYTMyNjgyMDNjNDhmMjNhZGEwYWZmZTI4OTJh
YTBjYjgzMDU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29kZVBhdGggYW4gZW51bSBjbGFzcy4gQmVz
aWRlcyB0aGUKKyAgICAgICAgdXN1YWwgZW51bSBjbGFzcyBiZW5lZml0cywgb25lIGFkZGl0aW9u
YWwgbmljZSB0aGluZworICAgICAgICBpcyB0aGF0IGl0IHJlbW92ZWQgdGhlIG5lZWQgZm9yIHRo
ZSAiQ29tcGxleCIgaWZkZWYuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6Y2FuVXNlRm9yRm9udEFuZFRleHQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojpp
c05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFRleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhc2NhZGU6OmNvZGVQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmNoYXJh
Y3RlclJhbmdlQ29kZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJl
bmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBbHdheXNVc2VzQ29tcGxleFRl
eHRDb2RlUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3Vy
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VT
aW1wbGVGb250Q29kZVBhdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVp
bGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6CisKIDIwMjAtMTIt
MTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
aW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0ICh0byBmaXggZmxha3kgZmFzdC9saXN0cy8wMDEuaHRt
bCBhbmQgZmFzdC9saXN0cy8wMDEtdmVydGljYWwuaHRtbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTUzNzJhMmIy
OWNkNjRhYjIwODZiMWYwNGU2YmViMWZmYTc5MTVjYy4uMDQ4MzJjNGNkOGFiNzAwYzNkYmNmYTAy
MDI5MDg3YWEwMDk1MDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMi0xNiAg
Um9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgRm9udENhc2NhZGU6
OkNvZGVQYXRoIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkYXB0IHRvIGVudW0gY2xhc3MgY2hhbmdlLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOgorCiAyMDIwLTEyLTE2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBzYW5k
Ym94IHBhcmFtZXRlciBmb3IgbWVzc2FnZSBmaWx0ZXIgZW50aXRsZW1lbnQgc3RhdHVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggNWRkYzI3NmFlYWRiZWRlZTI2M2NhZmJlY2Mx
ZTlhNGZiNTdhMGFlYy4uNzM3ODZjNzBmMGVlODY3OGU2NzNkZTJjNTBmZTQ1NTNmNTQ3YWZjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIHN0YXRp
YyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JGb250QW5kVGV4dChjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBXZWJDb3Jl
OjpUZXh0UnVuIHJ1bihTdHJpbmcodGV4dFJlbmRlcmVyLnRleHQoKSkpOwogICAgICAgICAgICAg
cnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7Ci0gICAgICAgICAgICBpZiAo
c3R5bGUuZm9udENhc2NhZGUoKS5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUp
CisgICAgICAgICAgICBpZiAoc3R5bGUuZm9udENhc2NhZGUoKS5jb2RlUGF0aChydW4pICE9IENv
ZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lG
X05FRURFRChGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0aCwgcmVhc29ucywgaW5jbHVkZVJlYXNv
bnMpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBhYjQxNGEwOWFhZmRiODgyODgzNTRl
ZTMwNzRiZTYzNjM0MDY4MmViLi5kMDI0YWFhNGE3ODJiNDViNDgxZjI2ZWNmYTFhNGVmYmIxZDk0
ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYXlv
dXRTaXplPiBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRDb250aW51YXRpb24o
Y29uCiAKIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKGNvbnN0IFN0
cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHdoaXRlc3Bh
Y2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChUZXh0UnVuKGNvbnRlbnQp
KSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleCkKKyAgICBpZiAoZm9udC5jb2RlUGF0aChUZXh0UnVu
KGNvbnRlbnQpKSA9PSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGZvbnQud29yZFNwYWNpbmcoKSB8fCBmb250LmxldHRlclNwYWNpbmcoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCmluZGV4IGY2YjVmMGUzOGRiODNlOWVjMDUwYjVlMWRhZTM1MTA5MDk5
ZTVhNzYuLmVjOGVjOWYzNmYxNzJjNjUxOTFlZGMxY2YyNmE5MmQ2MmI2OGJhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
aXNOZWVkZWQoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAg
ewogICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRl
eHQsIHRleHQuc3R5bGUoKSk7Ci0gICAgICAgIHJldHVybiBmb250LmNvZGVQYXRoKHJ1bikgPT0g
Rm9udENhc2NhZGU6OkNvbXBsZXg7CisgICAgICAgIHJldHVybiBmb250LmNvZGVQYXRoKHJ1bikg
PT0gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgfQogCiAgICAgVGV4dExheW91dChSZW5kZXJUZXh0
JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgeFBvcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBjZDYyZWVl
YWI3NjQwM2U3ZjdlMzYzMjkyNmViNjJhMTUxMzRiZGJmLi42NTEwNGU5NmFhMmJlOGIzYjM3M2U2
ZjgxYTEwMDkzY2Q4MzQxZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBib29sIHVzZUJh
Y2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiAgICAg
cmV0dXJuIHNldC5nZXQoKS5jb250YWlucyhmYW1pbHkpOwogfQogCi1Gb250Q2FzY2FkZTo6Q29k
ZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBBdXRvOworQ29kZVBhdGggRm9udENhc2Nh
ZGU6OnNfY29kZVBhdGggPSBDb2RlUGF0aDo6QXV0bzsKIAogLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIC8vIEZvbnRDYXNjYWRlIEltcGxlbWVudGF0aW9uIChDcm9zcy1Q
bGF0Zm9ybSBQb3J0aW9uKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVw
ZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKIAogR2x5cGhC
dWZmZXIgRm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXgp
CiAgICAgICAgIHJldHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRF
bXBoYXNpcyk7CiAKICAgICByZXR1cm4gbGF5b3V0Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywg
Zm9yVGV4dEVtcGhhc2lzKTsKQEAgLTMzMSw4ICszMzEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVu
KEdyYQogICAgIAogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQg
aGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMDA1MAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2Rl
UGF0aChydW4pOwotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtl
cm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0g
cnVuLmxlbmd0aCgpKSkKLSAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CisgICAgaWYg
KGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8
fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxlbmd0
aCgpKSkKKyAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAg
YXV0byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBk
ZXN0aW5hdGlvbik7CiAgICAgZ2x5cGhCdWZmZXIuZmxhdHRlbigpOwpAQCAtMzYzLDcgKzM2Myw3
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1
biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsKIAog
ICAgIGF1dG8gY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRo
VG9Vc2UgPT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpD
b21wbGV4KSB7CiAgICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb21wbGV4SXRlcmF0b3Io
KnRoaXMsIHJ1biwgZmFsc2UsIGZhbGxiYWNrRm9udHMpOwogICAgICAgICBjb21wbGV4SXRlcmF0
b3IuYWR2YW5jZShmcm9tLCBudWxscHRyLCBJbmNsdWRlUGFydGlhbEdseXBocywgZmFsbGJhY2tG
b250cyk7CiAgICAgICAgIG9mZnNldEJlZm9yZVJhbmdlID0gY29tcGxleEl0ZXJhdG9yLnJ1bldp
ZHRoU29GYXIoKTsKQEAgLTM5OCwxMiArMzk4LDEyIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0
aChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRz
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQ
YXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgeworICAgIGlmIChj
b2RlUGF0aFRvVXNlICE9IENvZGVQYXRoOjpDb21wbGV4KSB7CiAgICAgICAgIC8vIFRoZSBjb21w
bGV4IHBhdGggaXMgbW9yZSByZXN0cmljdGl2ZSBhYm91dCByZXR1cm5pbmcgZmFsbGJhY2sgZm9u
dHMgdGhhbiB0aGUgc2ltcGxlIHBhdGgsIHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgdGVzdCB0byBt
YWtlIHRoZWlyIGJlaGF2aW9ycyBtYXRjaC4KICAgICAgICAgaWYgKCFjYW5SZXR1cm5GYWxsYmFj
a0ZvbnRzRm9yQ29tcGxleFRleHQoKSkKICAgICAgICAgICAgIGZhbGxiYWNrRm9udHMgPSBudWxs
cHRyOwogICAgICAgICAvLyBUaGUgc2ltcGxlIHBhdGggY2FuIG9wdGltaXplIHRoZSBjYXNlIHdo
ZXJlIGdseXBoIG92ZXJmbG93IGlzIG5vdCBvYnNlcnZhYmxlLgotICAgICAgICBpZiAoY29kZVBh
dGhUb1VzZSAhPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAh
Z2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCisgICAgICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAm
JiAhZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCiAgICAgICAgICAgICBnbHlwaE92ZXJm
bG93ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6d2lkdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cwogICAgICAgICBmYWxsYmFja0ZvbnRzID0gJmxvY2FsRmFsbGJhY2tGb250czsK
IAogICAgIGZsb2F0IHJlc3VsdDsKLSAgICBpZiAoY29kZVBhdGhUb1VzZSA9PSBDb21wbGV4KQor
ICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXN1
bHQgPSBmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92
ZXJmbG93KTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JTaW1wbGVU
ZXh0KHJ1biwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CkBAIC01NDYsNyArNTQ2LDcg
QEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9h
dCYgd2lkdGgpIGNvbnN0CiB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKLSAgICBpZiAoY29kZVBhdGgo
cnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKKyAgICBpZiAoY29kZVBhdGgocnVuLCBmcm9tLCB0
bykgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBhZGp1c3RTZWxlY3Rpb25S
ZWN0Rm9yU2ltcGxlVGV4dChydW4sIHNlbGVjdGlvblJlY3QsIGZyb20sIGRlc3RpbmF0aW9uKTsK
IAogICAgIHJldHVybiBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQocnVuLCBzZWxl
Y3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBG
b250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCBMYXlvdXRSZWN0JiBzZWwKIAogaW50IEZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbihj
b25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNv
bnN0CiB7Ci0gICAgaWYgKGNvZGVQYXRoKHJ1biwgeCkgIT0gQ29tcGxleCkKKyAgICBpZiAoY29k
ZVBhdGgocnVuLCB4KSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIG9mZnNl
dEZvclBvc2l0aW9uRm9yU2ltcGxlVGV4dChydW4sIHgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsK
IAogICAgIHJldHVybiBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KHJ1biwgeCwgaW5j
bHVkZVBhcnRpYWxHbHlwaHMpOwpAQCAtNjA3LDIwICs2MDcsMjAgQEAgdm9pZCBGb250Q2FzY2Fk
ZTo6c2V0Q29kZVBhdGgoQ29kZVBhdGggcCkKICAgICBzX2NvZGVQYXRoID0gcDsKIH0KIAotRm9u
dENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aCgpCitDb2RlUGF0aCBGb250
Q2FzY2FkZTo6Y29kZVBhdGgoKQogewogICAgIHJldHVybiBzX2NvZGVQYXRoOwogfQogCi1Gb250
Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1
biwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QK
K0NvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlv
bmFsPHVuc2lnbmVkPiBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAg
aWYgKHNfY29kZVBhdGggIT0gQXV0bykKKyAgICBpZiAoc19jb2RlUGF0aCAhPSBDb2RlUGF0aDo6
QXV0bykKICAgICAgICAgcmV0dXJuIHNfY29kZVBhdGg7CiAKICNpZiAhVVNFKEZSRUVUWVBFKQog
ICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0
aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEwMDA1MAogICAgIGlmICgoZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygp
KSAmJiAoZnJvbS52YWx1ZU9yKDApIHx8IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKSAhPSBydW4u
bGVuZ3RoKCkpKQotICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJvbSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRvKTsKQEAgLTYzMCw1MyArNjMwLDUzIEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBG
b250Q2FzY2FkZTo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBPcHRpb25hbDx1bnNpZ25l
CiAgICAgLy8gQmVjYXVzZSBGb250OjphcHBseVRyYW5zZm9ybXMoKSBkb2Vzbid0IGtub3cgd2hp
Y2ggZmVhdHVyZXMgdG8gZW5hYmxlL2Rpc2FibGUgaW4gdGhlIHNpbXBsZSBjb2RlIHBhdGgsIGl0
IGNhbid0IHByb3Blcmx5IGhhbmRsZSBmZWF0dXJlIG9yIHZhcmlhbnQgc2V0dGluZ3MuCiAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3OTE6
IEBmb250LWZhY2UgZmVhdHVyZXMgc2hvdWxkIGFsc28gY2F1c2UgdGhpcyB0byBiZSBjb21wbGV4
LgogICAgIGlmIChtX2ZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkgPiAw
IHx8ICFtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50U2V0dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQot
ICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4
OwogCiAjZWxzZQogCiAgICAgaWYgKHJ1bi5sZW5ndGgoKSA+IDEgJiYgKGVuYWJsZUtlcm5pbmco
KSB8fCByZXF1aXJlc1NoYXBpbmcoKSkpCi0gICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAg
ICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAjZW5kaWYKIAogICAgIGlmICghcnVuLmNoYXJh
Y3RlclNjYW5Gb3JDb2RlUGF0aCgpKQotICAgICAgICByZXR1cm4gU2ltcGxlOworICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OlNpbXBsZTsKIAogICAgIGlmIChydW4uaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBDb2RlUGF0aDo6U2ltcGxlOwogCiAgICAg
Ly8gU3RhcnQgZnJvbSAwIHNpbmNlIGRyYXdpbmcgYW5kIGhpZ2hsaWdodGluZyBhbHNvIG1lYXN1
cmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHJ1bi0+ZnJvbS4KICAgICByZXR1cm4gY2hhcmFjdGVy
UmFuZ2VDb2RlUGF0aChydW4uY2hhcmFjdGVyczE2KCksIHJ1bi5sZW5ndGgoKSk7CiB9CiAKLUZv
bnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuKQorQ29kZVBhdGggRm9udENhc2Nh
ZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBhIFVuaWNvZGVTZXQgaW4gcG9y
dHMgd2hlcmUgSUNVIGlzIHVzZWQuIE5vdGUgdGhhdCB3ZSAKICAgICAvLyBjYW4ndCBzaW1wbHkg
dXNlIFVuaWNvZGVDaGFyYWN0ZXIgUHJvcGVydHkvY2xhc3MgYmVjYXVzZSBzb21lIGNoYXJhY3Rl
cnMKICAgICAvLyBhcmUgbm90ICdjb21iaW5pbmcnLCBidXQgc3RpbGwgbmVlZCB0byBnbyB0byB0
aGUgY29tcGxleCBwYXRoLgogICAgIC8vIEFsdGVybmF0aXZlbHksIHdlIG1heSBhcyB3ZWxsIGNv
bnNpZGVyIGJpbmFyeSBzZWFyY2ggb3ZlciBhIHNvcnRlZAogICAgIC8vIGxpc3Qgb2YgcmFuZ2Vz
LgotICAgIENvZGVQYXRoIHJlc3VsdCA9IFNpbXBsZTsKKyAgICBDb2RlUGF0aCByZXN1bHQgPSBD
b2RlUGF0aDo6U2ltcGxlOwogICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBD
YW5kaWRhdGUgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKICAgICAgICAgY29uc3QgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmIChj
ID09IHplcm9XaWR0aEpvaW5lciAmJiBwcmV2aW91c0NoYXJhY3RlcklzRW1vamlHcm91cENhbmRp
ZGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENv
ZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAKICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJJc0Vt
b2ppR3JvdXBDYW5kaWRhdGUgPSBmYWxzZTsKICAgICAgICAgaWYgKGMgPCAweDJFNSkgLy8gVSsw
MkU1IHRocm91Z2ggVSswMkU5IChNb2RpZmllciBMZXR0ZXJzIDogVG9uZSBsZXR0ZXJzKSAgCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgyRTkpIAotICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7
CiAKICAgICAgICAgaWYgKGMgPCAweDMwMCkgLy8gVSswMzAwIHRocm91Z2ggVSswMzZGIENvbWJp
bmluZyBkaWFjcml0aWNhbCBtYXJrcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChjIDw9IDB4MzZGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDA1OTEgfHwgYyA9
PSAweDA1QkUpIC8vIFUrMDU5MSB0aHJvdWdoIFUrMDVDRiBleGNsdWRpbmcgVSswNUJFIEhlYnJl
dyBjb21iaW5pbmcgbWFya3MsIEhlYnJldyBwdW5jdHVhdGlvbiBQYXNlcSwgU29mIFBhc3VxIGFu
ZCBOdW4gSGFmdWtoYQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4
MDVDRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENv
ZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIC8vIFUrMDYwMCB0aHJvdWdoIFUrMTA5RiBBcmFi
aWMsIFN5cmlhYywgVGhhYW5hLCBOS28sIFNhbWFyaXRhbiwgTWFuZGFpYywKICAgICAgICAgLy8g
RGV2YW5hZ2FyaSwgQmVuZ2FsaSwgR3VybXVraGksIEd1amFyYXRpLCBPcml5YSwgVGFtaWwsIFRl
bHVndSwgS2FubmFkYSwgCkBAIC02ODQsOTcgKzY4NCw5NyBAQCBGb250Q2FzY2FkZTo6Q29kZVBh
dGggRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcgogICAgICAgICBpZiAoYyA8IDB4MDYwMCkgCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGMgPD0gMHgxMDlGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAg
ICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgLy8gVSsxMTAwIHRo
cm91Z2ggVSsxMUZGIEhhbmd1bCBKYW1vIChvbmx5IEFuY2llbnQgS29yZWFuIHNob3VsZCBiZSBs
ZWZ0IGhlcmUgaWYgeW91IHByZWNvbXBvc2U7CiAgICAgICAgIC8vIE1vZGVybiBLb3JlYW4gd2ls
bCBiZSBwcmVjb21wb3NlZCBhcyBhIHJlc3VsdCBvZiBzdGVwIEEpCiAgICAgICAgIGlmIChjIDwg
MHgxMTAwKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTFGRikK
LSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRo
OjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxMzVEKSAvLyBVKzEzNUQgdGhyb3VnaCBV
KzEzNUYgRXRoaW9waWMgY29tYmluaW5nIG1hcmtzCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGMgPD0gMHgxMzVGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAg
ICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDE3
MDApIC8vIFUrMTc4MCB0aHJvdWdoIFUrMThBRiBUYWdhbG9nLCBIYW51bm9vLCBCdWhpZCwgVGFn
aGFud2EsS2htZXIsIE1vbmdvbGlhbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChjIDw9IDB4MThBRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
cmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxOTAwKSAvLyBV
KzE5MDAgdGhyb3VnaCBVKzE5NEYgTGltYnUgKFVuaWNvZGUgNC4wKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTk0RikKLSAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlm
IChjIDwgMHgxOTgwKSAvLyBVKzE5ODAgdGhyb3VnaCBVKzE5REYgTmV3IFRhaSBMdWUKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE5REYpCi0gICAgICAgICAgICBy
ZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAog
ICAgICAgICBpZiAoYyA8IDB4MUEwMCkgLy8gVSsxQTAwIHRocm91Z2ggVSsxQ0ZGIEJ1Z2luZXNl
LCBUYWkgVGhhbSwgQmFsaW5lc2UsIEJhdGFrLCBMZXBjaGEsIFZlZGljCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxQ0ZGKQotICAgICAgICAgICAgcmV0dXJuIENv
bXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAg
aWYgKGMgPCAweDFEQzApIC8vIFUrMURDMCB0aHJvdWdoIFUrMURGRiBDb21pbmluZyBkaWFjcml0
aWNhbCBtYXJrIHN1cHBsZW1lbnQKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAo
YyA8PSAweDFERkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJl
dHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAvLyBVKzFFMDAgdGhyb3VnaCBVKzIw
MDAgY2hhcmFjdGVycyB3aXRoIGRpYWNyaXRpY3MgYW5kIHN0YWNrZWQgZGlhY3JpdGljcwogICAg
ICAgICBpZiAoYyA8PSAweDIwMDApIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFNpbXBsZVdpdGhH
bHlwaE92ZXJmbG93OworICAgICAgICAgICAgcmVzdWx0ID0gQ29kZVBhdGg6OlNpbXBsZVdpdGhH
bHlwaE92ZXJmbG93OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoYyA8IDB4MjBEMCkgLy8gVSsyMEQwIHRocm91Z2ggVSsyMEZGIENvbWJpbmluZyBtYXJr
cyBmb3Igc3ltYm9scwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4
MjBGRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENv
ZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgyNkY5KQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChjIDwgMHgyNkZBKQotICAgICAgICAgICAgcmV0dXJuIENv
bXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAg
aWYgKGMgPCAweDJDRUYpIC8vIFUrMkNFRiB0aHJvdWdoIFUrMkNGMSBDb21iaW5pbmcgbWFya3Mg
Zm9yIENvcHRpYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MkNG
MSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDJBKSAvLyBVKzMwMkEgdGhyb3Vn
aCBVKzMwMkYgSWRlb2dyYXBoaWMgYW5kIEhhbmd1bCBUb25lIG1hcmtzCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgzMDJGKQotICAgICAgICAgICAgcmV0dXJuIENv
bXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAg
aWYgKGMgPCAweDMwOTkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPCAw
eDMwOUQpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsgLy8gS0FUQUtBTkEtSElSQUdBTkEg
KFNFTUktKVZPSUNFRCBTT1VORCBNQVJLUyByZXF1aXJlIGNoYXJhY3RlciBjb21wb3NpdGlvbgor
ICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OyAvLyBLQVRBS0FOQS1ISVJBR0FO
QSAoU0VNSS0pVk9JQ0VEIFNPVU5EIE1BUktTIHJlcXVpcmUgY2hhcmFjdGVyIGNvbXBvc2l0aW9u
CiAKICAgICAgICAgaWYgKGMgPCAweEE2N0MpIC8vIFUrQTY3QyB0aHJvdWdoIFUrQTY3RCBDb21i
aW5pbmcgbWFya3MgZm9yIG9sZCBDeXJpbGxpYwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChjIDw9IDB4QTY3RCkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAg
ICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHhBNkYw
KSAvLyBVK0E2RjAgdGhyb3VnaCBVK0E2RjEgQ29tYmluaW5nIG1hcmsgZm9yIEJhbXVtCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhBNkYxKQotICAgICAgICAgICAg
cmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAK
ICAgICAgICAgLy8gVStBODAwIHRocm91Z2ggVStBQkZGIE5hZ3JpLCBQaGFncy1wYSwgU2F1cmFz
aHRyYSwgRGV2YW5hZ2FyaSBFeHRlbmRlZCwKICAgICAgICAgLy8gSGFuZ3VsIEphbW8gRXh0LiBB
LCBKYXZhbmVzZSwgTXlhbm1hciBFeHRlbmRlZCBBLCBUYWkgVmlldCwgTWVldGVpIE1heWVrLAog
ICAgICAgICBpZiAoYyA8IDB4QTgwMCkgCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKGMgPD0gMHhBQkZGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAg
ICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweEQ3QjApIC8v
IFUrRDdCMCB0aHJvdWdoIFUrRDdGRiBIYW5ndWwgSmFtbyBFeHQuIEIKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEQ3RkYpCi0gICAgICAgICAgICByZXR1cm4gQ29t
cGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBp
ZiAoYyA8PSAweERCRkYpIHsKICAgICAgICAgICAgIC8vIEhpZ2ggc3Vycm9nYXRlCkBAIC03OTEs
NjYgKzc5MSw2NiBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNoYXJhY3Rl
clJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcgogICAgICAgICAgICAgaWYgKHN1
cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDEwQTAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDEwQTYwKSAvLyBL
aGFyb3NodGhpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPCAweDExMDAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMDgwKSAvLyBCcmFobWkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8
IDB4MTEwRDApIC8vIEthaXRoaQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAg
ICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChz
dXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTEwMCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTE1MCkgLy8g
Q2hha21hCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAg
cmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlD
aGFyYWN0ZXIgPCAweDExMTgwKSAvLyBNYWhhamFuaQotICAgICAgICAgICAgICAgIHJldHVybiBD
b21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTFFMCkgLy8gU2hhcmFkYQot
ICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHgxMTIwMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChz
dXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTI1MCkgLy8gS2hvamtpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMkIwKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlD
aGFyYWN0ZXIgPCAweDExMzAwKSAvLyBLaHVkYXdhZGkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Q29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAg
ICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEzODApIC8vIEdyYW50aGEK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MTE0MDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAo
c3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE0ODApIC8vIE5ld2EKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE0RTApIC8v
IFRpcmh1dGEKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFy
eUNoYXJhY3RlciA8IDB4MTE1ODApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE2MDApIC8vIFNpZGRoYW0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8
IDB4MTE2NjApIC8vIE1vZGkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3Vw
cGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE2ODApCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE2RDApIC8vIFRh
a3JpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0
dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFy
YWN0ZXIgPCAweDExNzAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExQzAwKSAvLyBBaG9tLCBEb2dyYSwgRGl2
ZXMgQWt1cnUsIE5hbmRpbmFnYXJpLCBaYW5hYmF6YXIgU3F1YXJlLCBTb3lvbWJvLCBXYXJhbmcg
Q2l0aSwgUGF1IENpbiBIYXUKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3Vw
cGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTFDNzApIC8vIEJoYWlrc3VraQotICAgICAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMUNDMCkg
Ly8gTWFyY2hlbgotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50
YXJ5Q2hhcmFjdGVyIDwgMHgxRTkwMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxRTk2MCkgLy8gQWRsYW0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8
IDB4MUYxRTYpIC8vIFUrMUYxRTYgdGhyb3VnaCBVKzFGMUZGIFJlZ2lvbmFsIEluZGljYXRvciBT
eW1ib2xzCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxl
bWVudGFyeUNoYXJhY3RlciA8PSAweDFGMUZGKQotICAgICAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAg
ICAgICAgaWYgKGlzRW1vamlGaXR6cGF0cmlja01vZGlmaWVyKHN1cHBsZW1lbnRhcnlDaGFyYWN0
ZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJl
dHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChpc0Vtb2ppR3JvdXBDYW5k
aWRhdGUoc3VwcGxlbWVudGFyeUNoYXJhY3RlcikpIHsKICAgICAgICAgICAgICAgICBwcmV2aW91
c0NoYXJhY3RlcklzRW1vamlHcm91cENhbmRpZGF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC04NTksMTEgKzg1OSwxMSBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9u
dENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJhY3Rlcgog
ICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweEUwMDAwKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0
ZXIgPCAweEUwMDgwKSAvLyBUYWdzCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweEUwMTAwKSAvLyBVK0UwMTAwIHRocm91Z2ggVStF
MDFFRiBVbmljb2RlIHZhcmlhdGlvbiBzZWxlY3RvcnMuCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8PSAweEUwMUVGKQot
ICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAgICAgLy8gRklYTUU6IENoZWNrIGZvciBCcmFo
bWkgKFUrMTEwMDAgYmxvY2spLCBLYWl0aGkgKFUrMTEwODAgYmxvY2spIGFuZCBvdGhlciBjb21w
bGV4IHNjcmlwdHMKICAgICAgICAgICAgIC8vIGluIHBsYW5lIDEgb3IgaGlnaGVyLgpAQCAtODc0
LDEyICs4NzQsMTIgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0
ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgaWYgKGMgPCAw
eEZFMDApIC8vIFUrRkUwMCB0aHJvdWdoIFUrRkUwRiBVbmljb2RlIHZhcmlhdGlvbiBzZWxlY3Rv
cnMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEZFMEYpCi0gICAg
ICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4RkUyMCkgLy8gVStGRTIwIHRocm91Z2ggVStGRTJG
IENvbWJpbmluZyBoYWxmIG1hcmtzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGMgPD0gMHhGRTJGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCAy
NWMyNThiNTQyNzFlMDFiZWUyODhmZDgzYzdmMDE1Nzk3YmIzOTlhLi44N2E1MWE3MDJkMzU0MGMw
NmZlOWNmYzJmM2JhODkzMmJiZTlkNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTM0LDEyICszNCw2IEBACiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi0v
LyAiWDExL1guaCIgZGVmaW5lcyBDb21wbGV4IHRvIDAgYW5kIGNvbmZsaWN0cwotLy8gd2l0aCBD
b21wbGV4IHZhbHVlIGluIENvZGVQYXRoIGVudW0uCi0jaWZkZWYgQ29tcGxleAotI3VuZGVmIENv
bXBsZXgKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKQEAgLTkzLDYgKzg3LDggQEAgcHVibGljOgogICAgIHZvaWQgb3BlcmF0b3IoKShUZXh0
TGF5b3V0KikgY29uc3Q7CiB9OwogCitlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhfdCB7IEF1
dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKKwogY2xhc3Mg
Rm9udENhc2NhZGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Rm9udENhc2NhZGU+IHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBGb250Q2FzY2FkZSgpOwpAQCAtMTg5LDkgKzE4NSw4IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFi
bGUoKTsKIAotICAgIGVudW0gQ29kZVBhdGggeyBBdXRvLCBTaW1wbGUsIENvbXBsZXgsIFNpbXBs
ZVdpdGhHbHlwaE92ZXJmbG93IH07CiAgICAgQ29kZVBhdGggY29kZVBhdGgoY29uc3QgVGV4dFJ1
biYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwotICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFy
YWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIFNpbXBs
ZTsgfQorICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExD
aGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7IH0KICAgICBzdGF0aWMg
Q29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bik7CiAKICAgICBib29sIHByaW1hcnlGb250SXNTeXN0ZW1Gb250KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKaW5k
ZXggOTcyMmJlZjZkYTAwYWM0NzJlZTYyZmI1MjdjMTg0OWJlODI1MDA4MS4uMzVmZTdlMjkzMmVl
OTdkODgwZjY5MTUzNTFkMmFhNDkyMWM3MzA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgV2ViQ29yZVNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgY29tcGxl
eCkKIAogYm9vbCBXZWJDb3JlQWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoKQogewotICAg
IHJldHVybiBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsK
KyAgICByZXR1cm4gRm9udENhc2NhZGU6OmNvZGVQYXRoKCkgPT0gQ29kZVBhdGg6OkNvbXBsZXg7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAppbmRleCA1MDZiMGUxNGViNDE4YmJlNTM1NTg4YTI5NDcxMjQxNGUyNWU3YmZj
Li5lMzQyYzkwYzE5MDdjMjQ1OWNmZGVmNjNhMjg2ZjI1ZDllYzBhNWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBib29sIFJl
bmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAg
ICAgLy8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgZm9udCBjb2RlcGF0aC4KICAgICBUZXh0UnVu
IHJ1bihtX3RleHQpOwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoZmFsc2Up
OwotICAgIGlmIChmb250LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkKKyAg
ICBpZiAoZm9udC5jb2RlUGF0aChydW4pICE9IENvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8gd2hpdGVzcGFjZUlzQ29sbGFwc2VkID0gc3R5bGUoKS5j
b2xsYXBzZVdoaXRlU3BhY2UoKTsKQEAgLTE3NjMsNyArMTc2Myw3IEBAIGJvb2wgUmVuZGVyVGV4
dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
aXNBbGxBU0NJSSB8fCB0ZXh0KCkuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hhcmFj
dGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOworICAgIHJldHVybiBG
b250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hhcmFjdGVyczE2KCks
IGxlbmd0aCgpKSA9PSBDb2RlUGF0aDo6U2ltcGxlOwogfQogCiB2b2lkIFJlbmRlclRleHQ6Om1v
bWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFz
dFR5cGVkQ2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IGE5NGNhMjk5MWMxYTRhYmE5YTUyZWVl
ZDZhYmVlYWU2N2I3YWQ2ZTUuLjMyOGU4NTczMDMzZDI0YjViODBmN2RlMGZkZDliZDUzY2Q2OWVm
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzQnVpbGRlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNz
QnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJ
bmxpbgogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIHNjYWxlZEZvbnQgPSB0ZXh0LnNjYWxlZEZv
bnQoKTsKICAgICBtX3J1biA9IFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQp
OwotICAgIG1faXNDb21wbGV4VGV4dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZv
bnRDYXNjYWRlOjpDb21wbGV4OworICAgIG1faXNDb21wbGV4VGV4dCA9IHNjYWxlZEZvbnQuY29k
ZVBhdGgobV9ydW4pID09IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgaWYgKG1faXNDb21wbGV4
VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5ZWQ1YzZmMjBjZDFiYmUxZTkwNmU3
ZDk0MDdmYzRmOWU4OTQ4NmZiLi40MTIzYmJiMTExMDIxZjdlOTBlY2MzZjcyN2UxMzE2M2MwMTVm
OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC02NTUsNyAr
NjU1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiB7Ci0gICAg
V2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRoKGFsd2F5c1VzZUNvbXBsZXhUZXh0ID8g
V2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvbXBsZXggOiBXZWJDb3JlOjpGb250Q2FzY2FkZTo6QXV0
byk7CisgICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRoKGFsd2F5c1VzZUNvbXBs
ZXhUZXh0ID8gV2ViQ29yZTo6Q29kZVBhdGg6OkNvbXBsZXggOiBXZWJDb3JlOjpDb2RlUGF0aDo6
QXV0byk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhi
b29sIHVzZUZvbnRTbW9vdGhpbmcpCg==
</data>
<flag name="commit-queue"
          id="433834"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416338</attachid>
            <date>2020-12-16 07:22:31 -0800</date>
            <delta_ts>2020-12-16 14:36:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201216162230.patch</filename>
            <type>text/plain</type>
            <size>30091</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZlZTA3NzgzNzgyNTY2
NzFlMjMwOWY2M2YzMTZkOWMyYWFkMzMyNy4uNDhlMmFhNjc4Y2YyMzE3Zjc4OGEyMmQxMDQ2ZDMy
OTVjNzA1MTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29kZVBhdGggYW4gZW51bSBjbGFzcy4gQmVz
aWRlcyB0aGUKKyAgICAgICAgdXN1YWwgZW51bSBjbGFzcyBiZW5lZml0cywgb25lIGFkZGl0aW9u
YWwgbmljZSB0aGluZworICAgICAgICBpcyB0aGF0IGl0IHJlbW92ZWQgdGhlIG5lZWQgZm9yIHRo
ZSAiQ29tcGxleCIgaWZkZWYuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6Y2FuVXNlRm9yRm9udEFuZFRleHQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojpp
c05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFRleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpjb2RlUGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y2hh
cmFjdGVyUmFuZ2VDb2RlUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVNldEFsd2F5c1VzZXNDb21w
bGV4VGV4dENvZGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVD
YW5Vc2VTaW1wbGVGb250Q29kZVBhdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRy
aWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6CisKIDIw
MjAtMTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0ICh0byBmaXggZmxha3kgZmFzdC9saXN0cy8w
MDEuaHRtbCBhbmQgZmFzdC9saXN0cy8wMDEtdmVydGljYWwuaHRtbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTUz
NzJhMmIyOWNkNjRhYjIwODZiMWYwNGU2YmViMWZmYTc5MTVjYy4uNjhlYzQ2MDBlMjRmMjI1ZDVk
MDA2OGUwZWFkYmRlOTk4MDYxOWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0x
Mi0xNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgRm9udENh
c2NhZGU6OkNvZGVQYXRoIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgp
OgorCisyMDIwLTEyLTE2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAg
TWFrZSBGb250Q2FzY2FkZTo6Q29kZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRhcHQgdG8gZW51bSBjbGFzcyBjaGFu
Z2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6CisKIDIw
MjAtMTItMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPU10gQWRkIHNhbmRib3ggcGFyYW1ldGVyIGZvciBtZXNzYWdlIGZpbHRlciBlbnRpdGxl
bWVudCBzdGF0dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxYjRhMzJkMzdiYmFh
Mzk1MzU1ODNkMmM4NTExMmE2ZWU5NThlZDYzLi4xNTVkMzk1MGM3MzZlMDJmZDlmYjc1N2NmNTM0
YjJlYzM2NmFlZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjAtMTItMTYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBN
YWtlIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byBlbnVtIGNsYXNzIGNoYW5n
ZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBf
c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGg6XSk6CisKIDIwMjAtMTItMTQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI3MDc2OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCA1ZGRjMjc2YWVh
ZGJlZGVlMjYzY2FmYmVjYzFlOWE0ZmI1N2EwYWVjLi43Mzc4NmM3MGYwZWU4Njc4ZTY3M2RlMmM1
MGZlNDU1M2Y1NDdhZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00OTgs
NyArNDk4LDcgQEAgc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckZv
bnRBbmRUZXh0KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWMKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIFdlYkNvcmU6OlRleHRSdW4gcnVuKFN0cmluZyh0ZXh0UmVuZGVyZXIudGV4dCgp
KSk7CiAgICAgICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsK
LSAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9u
dENhc2NhZGU6OlNpbXBsZSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNv
ZGVQYXRoKHJ1bikgIT0gQ29kZVBhdGg6OlNpbXBsZSkKICAgICAgICAgICAgICAgICBTRVRfUkVB
U09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNDb21wbGV4Rm9udENvZGVQYXRoLCByZWFz
b25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiNDE0
YTA5YWFmZGI4ODI4ODM1NGVlMzA3NGJlNjM2MzQwNjgyZWIuLmQwMjRhYWE0YTc4MmI0NWI0ODFm
MjZlY2ZhMWE0ZWZiYjFkOTRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zmc2V0Rm9ySW5GbG93UG9zaXRp
b25lZENvbnRpbnVhdGlvbihjb24KIAogc3RhdGljIGJvb2wgY2FuVXNlU2ltcGxpZmllZFRleHRN
ZWFzdXJpbmcoY29uc3QgU3RyaW5nVmlldyYgY29udGVudCwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGJvb2wgd2hpdGVzcGFjZUlzQ29sbGFwc2VkKQogewotICAgIGlmIChmb250LmNvZGVQYXRo
KFRleHRSdW4oY29udGVudCkpID09IEZvbnRDYXNjYWRlOjpDb21wbGV4KQorICAgIGlmIChmb250
LmNvZGVQYXRoKFRleHRSdW4oY29udGVudCkpID09IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZm9udC53b3JkU3BhY2luZygpIHx8IGZvbnQubGV0
dGVyU3BhY2luZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZjZiNWYwZTM4ZGI4M2U5ZWMw
NTBiNWUxZGFlMzUxMDkwOTllNWE3Ni4uZWM4ZWM5ZjM2ZjE3MmM2NTE5MWVkYzFjZjI2YTkyZDYy
YjY4YmFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCkKICAgICB7CiAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKLSAgICAgICAgcmV0dXJuIGZvbnQu
Y29kZVBhdGgocnVuKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKKyAgICAgICAgcmV0dXJuIGZv
bnQuY29kZVBhdGgocnVuKSA9PSBDb2RlUGF0aDo6Q29tcGxleDsKICAgICB9CiAKICAgICBUZXh0
TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4
UG9zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCmluZGV4IGNkNjJlZWVhYjc2NDAzZTdmN2UzNjMyOTI2ZWI2MmExNTEzNGJkYmYuLjQ1MGVk
ZTAyYzVjMGQwMzlmMDA0OGRjYzZmYzlkMWNhZTAwNmY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJp
bmcmIGZhbWlseSkKICAgICByZXR1cm4gc2V0LmdldCgpLmNvbnRhaW5zKGZhbWlseSk7CiB9CiAK
LUZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IEF1dG87CitD
b2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IENvZGVQYXRoOjpBdXRvOwogCiAvLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRm9udENhc2NhZGUgSW1wbGVt
ZW50YXRpb24gKENyb3NzLVBsYXRmb3JtIFBvcnRpb24pCkBAIC0yODcsNyArMjg3LDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9y
KSBjb25zdAogCiBHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0VGV4dChDb2RlUGF0aCBj
b2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7Ci0gICAg
aWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKKyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBD
b2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIGxheW91dFNpbXBsZVRleHQocnVuLCBm
cm9tLCB0bywgZm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4
dChydW4sIGZyb20sIHRvLCBmb3JUZXh0RW1waGFzaXMpOwpAQCAtMzMxLDggKzMzMSw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBj
b2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxp
Z2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCiAgICAgQ29kZVBhdGggY29k
ZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29t
cGxleCAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygpKSAmJiAoZnJvbSB8
fCBkZXN0aW5hdGlvbiAhPSBydW4ubGVuZ3RoKCkpKQotICAgICAgICBjb2RlUGF0aFRvVXNlID0g
Q29tcGxleDsKKyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb2RlUGF0aDo6Q29tcGxleCAmJiAo
ZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygpKSAmJiAoZnJvbSB8fCBkZXN0aW5h
dGlvbiAhPSBydW4ubGVuZ3RoKCkpKQorICAgICAgICBjb2RlUGF0aFRvVXNlID0gQ29kZVBhdGg6
OkNvbXBsZXg7CiAKICAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2RlUGF0aFRv
VXNlLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uKTsKICAgICBnbHlwaEJ1ZmZlci5mbGF0dGVuKCk7
CkBAIC0zNjMsNyArMzYzLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2Uo
Y29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZAogICAgIGZsb2F0IHRv
dGFsV2lkdGggPSAwOwogCiAgICAgYXV0byBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsK
LSAgICBpZiAoY29kZVBhdGhUb1VzZSA9PSBDb21wbGV4KSB7CisgICAgaWYgKGNvZGVQYXRoVG9V
c2UgPT0gQ29kZVBhdGg6OkNvbXBsZXgpIHsKICAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVy
IGNvbXBsZXhJdGVyYXRvcigqdGhpcywgcnVuLCBmYWxzZSwgZmFsbGJhY2tGb250cyk7CiAgICAg
ICAgIGNvbXBsZXhJdGVyYXRvci5hZHZhbmNlKGZyb20sIG51bGxwdHIsIEluY2x1ZGVQYXJ0aWFs
R2x5cGhzLCBmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgb2Zmc2V0QmVmb3JlUmFuZ2UgPSBjb21w
bGV4SXRlcmF0b3IucnVuV2lkdGhTb0ZhcigpOwpAQCAtMzk4LDEyICszOTgsMTIgQEAgZmxvYXQg
Rm9udENhc2NhZGU6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250
Kj4qIGZhbGxiYWNrRm9udHMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDb2RlUGF0aCBjb2Rl
UGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKLSAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21w
bGV4KSB7CisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXgpIHsKICAg
ICAgICAgLy8gVGhlIGNvbXBsZXggcGF0aCBpcyBtb3JlIHJlc3RyaWN0aXZlIGFib3V0IHJldHVy
bmluZyBmYWxsYmFjayBmb250cyB0aGFuIHRoZSBzaW1wbGUgcGF0aCwgc28gd2UgbmVlZCBhbiBl
eHBsaWNpdCB0ZXN0IHRvIG1ha2UgdGhlaXIgYmVoYXZpb3JzIG1hdGNoLgogICAgICAgICBpZiAo
IWNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpKQogICAgICAgICAgICAgZmFs
bGJhY2tGb250cyA9IG51bGxwdHI7CiAgICAgICAgIC8vIFRoZSBzaW1wbGUgcGF0aCBjYW4gb3B0
aW1pemUgdGhlIGNhc2Ugd2hlcmUgZ2x5cGggb3ZlcmZsb3cgaXMgbm90IG9ic2VydmFibGUuCi0g
ICAgICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IFNpbXBsZVdpdGhHbHlwaE92ZXJmbG93ICYmIChn
bHlwaE92ZXJmbG93ICYmICFnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzKSkKKyAgICAgICAg
aWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OlNpbXBsZVdpdGhHbHlwaE92ZXJmbG93ICYm
IChnbHlwaE92ZXJmbG93ICYmICFnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzKSkKICAgICAg
ICAgICAgIGdseXBoT3ZlcmZsb3cgPSBudWxscHRyOwogICAgIH0KIApAQCAtNDE3LDcgKzQxNyw3
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8
Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAgICAgIGZhbGxiYWNrRm9udHMgPSAmbG9j
YWxGYWxsYmFja0ZvbnRzOwogCiAgICAgZmxvYXQgcmVzdWx0OwotICAgIGlmIChjb2RlUGF0aFRv
VXNlID09IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgPT0gQ29kZVBhdGg6OkNvbXBs
ZXgpCiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChydW4sIGZhbGxi
YWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gZmxv
YXRXaWR0aEZvclNpbXBsZVRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsK
QEAgLTQzMSw3ICs0MzEsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0
KFN0cmluZ1ZpZXcgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogewogICAgIGlmICh0
ZXh0LmlzTnVsbCgpIHx8IHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBB
U1NFUlQoY29kZVBhdGgoVGV4dFJ1bih0ZXh0KSkgIT0gRm9udENhc2NhZGU6OkNvbXBsZXgpOwor
ICAgIEFTU0VSVChjb2RlUGF0aChUZXh0UnVuKHRleHQpKSAhPSBDb2RlUGF0aDo6Q29tcGxleCk7
CiAgICAgZmxvYXQqIGNhY2hlRW50cnkgPSBtX2ZvbnRzLT53aWR0aENhY2hlKCkuYWRkKHRleHQs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSk7CiAgICAgaWYgKGNhY2hl
RW50cnkgJiYgIXN0ZDo6aXNuYW4oKmNhY2hlRW50cnkpKQogICAgICAgICByZXR1cm4gKmNhY2hl
RW50cnk7CkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VD
aGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCYgd2lkdGgpIGNvbnN0CiB2b2lkIEZvbnRDYXNjYWRl
OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJl
Y3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0
aCgpKTsKLSAgICBpZiAoY29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKKyAgICBp
ZiAoY29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAg
IHJldHVybiBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChydW4sIHNlbGVjdGlvblJl
Y3QsIGZyb20sIGRlc3RpbmF0aW9uKTsKIAogICAgIHJldHVybiBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7CkBA
IC01NTQsNyArNTU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZv
clRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWwKIAogaW50IEZvbnRDYXNj
YWRlOjpvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7Ci0gICAgaWYgKGNvZGVQYXRoKHJ1biwgeCkg
IT0gQ29tcGxleCkKKyAgICBpZiAoY29kZVBhdGgocnVuLCB4KSAhPSBDb2RlUGF0aDo6Q29tcGxl
eCkKICAgICAgICAgcmV0dXJuIG9mZnNldEZvclBvc2l0aW9uRm9yU2ltcGxlVGV4dChydW4sIHgs
IGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKIAogICAgIHJldHVybiBvZmZzZXRGb3JQb3NpdGlvbkZv
ckNvbXBsZXhUZXh0KHJ1biwgeCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMpOwpAQCAtNjA3LDIwICs2
MDcsMjAgQEAgdm9pZCBGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoQ29kZVBhdGggcCkKICAgICBz
X2NvZGVQYXRoID0gcDsKIH0KIAotRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpj
b2RlUGF0aCgpCitDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogewogICAgIHJldHVy
biBzX2NvZGVQYXRoOwogfQogCi1Gb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNv
ZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20sIE9wdGlv
bmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK0NvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChj
b25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tLCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8pIGNvbnN0CiB7Ci0gICAgaWYgKHNfY29kZVBhdGggIT0gQXV0bykKKyAgICBpZiAo
c19jb2RlUGF0aCAhPSBDb2RlUGF0aDo6QXV0bykKICAgICAgICAgcmV0dXJuIHNfY29kZVBhdGg7
CiAKICNpZiAhVVNFKEZSRUVUWVBFKQogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBw
YXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVy
ZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAogICAgIGlmICgoZW5hYmxlS2Vybmlu
ZygpIHx8IHJlcXVpcmVzU2hhcGluZygpKSAmJiAoZnJvbS52YWx1ZU9yKDApIHx8IHRvLnZhbHVl
T3IocnVuLmxlbmd0aCgpKSAhPSBydW4ubGVuZ3RoKCkpKQotICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZnJvbSk7CiAgICAgVU5VU0VEX1BBUkFNKHRvKTsKQEAgLTYzMCw1MyArNjMwLDUzIEBA
IEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1
biYgcnVuLCBPcHRpb25hbDx1bnNpZ25lCiAgICAgLy8gQmVjYXVzZSBGb250OjphcHBseVRyYW5z
Zm9ybXMoKSBkb2Vzbid0IGtub3cgd2hpY2ggZmVhdHVyZXMgdG8gZW5hYmxlL2Rpc2FibGUgaW4g
dGhlIHNpbXBsZSBjb2RlIHBhdGgsIGl0IGNhbid0IHByb3Blcmx5IGhhbmRsZSBmZWF0dXJlIG9y
IHZhcmlhbnQgc2V0dGluZ3MuCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3OTE6IEBmb250LWZhY2UgZmVhdHVyZXMgc2hvdWxkIGFsc28g
Y2F1c2UgdGhpcyB0byBiZSBjb21wbGV4LgogICAgIGlmIChtX2ZvbnREZXNjcmlwdGlvbi5mZWF0
dXJlU2V0dGluZ3MoKS5zaXplKCkgPiAwIHx8ICFtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50U2V0
dGluZ3MoKS5pc0FsbE5vcm1hbCgpKQotICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAg
cmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAjZWxzZQogCiAgICAgaWYgKHJ1bi5sZW5ndGgo
KSA+IDEgJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkpCi0gICAgICAg
IHJldHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAjZW5k
aWYKIAogICAgIGlmICghcnVuLmNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCgpKQotICAgICAgICBy
ZXR1cm4gU2ltcGxlOworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OlNpbXBsZTsKIAogICAgIGlm
IChydW4uaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6U2ltcGxlOwogCiAgICAgLy8gU3RhcnQgZnJvbSAwIHNpbmNlIGRyYXdpbmcgYW5k
IGhpZ2hsaWdodGluZyBhbHNvIG1lYXN1cmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHJ1bi0+ZnJv
bS4KICAgICByZXR1cm4gY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChydW4uY2hhcmFjdGVyczE2KCks
IHJ1bi5sZW5ndGgoKSk7CiB9CiAKLUZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6
Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuKQorQ29kZVBhdGggRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxk
IHVzZSBhIFVuaWNvZGVTZXQgaW4gcG9ydHMgd2hlcmUgSUNVIGlzIHVzZWQuIE5vdGUgdGhhdCB3
ZSAKICAgICAvLyBjYW4ndCBzaW1wbHkgdXNlIFVuaWNvZGVDaGFyYWN0ZXIgUHJvcGVydHkvY2xh
c3MgYmVjYXVzZSBzb21lIGNoYXJhY3RlcnMKICAgICAvLyBhcmUgbm90ICdjb21iaW5pbmcnLCBi
dXQgc3RpbGwgbmVlZCB0byBnbyB0byB0aGUgY29tcGxleCBwYXRoLgogICAgIC8vIEFsdGVybmF0
aXZlbHksIHdlIG1heSBhcyB3ZWxsIGNvbnNpZGVyIGJpbmFyeSBzZWFyY2ggb3ZlciBhIHNvcnRl
ZAogICAgIC8vIGxpc3Qgb2YgcmFuZ2VzLgotICAgIENvZGVQYXRoIHJlc3VsdCA9IFNpbXBsZTsK
KyAgICBDb2RlUGF0aCByZXN1bHQgPSBDb2RlUGF0aDo6U2ltcGxlOwogICAgIGJvb2wgcHJldmlv
dXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUgPSBmYWxzZTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgY29uc3QgVUNoYXIgYyA9IGNoYXJh
Y3RlcnNbaV07CiAgICAgICAgIGlmIChjID09IHplcm9XaWR0aEpvaW5lciAmJiBwcmV2aW91c0No
YXJhY3RlcklzRW1vamlHcm91cENhbmRpZGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4
OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAKICAgICAg
ICAgcHJldmlvdXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUgPSBmYWxzZTsKICAgICAg
ICAgaWYgKGMgPCAweDJFNSkgLy8gVSswMkU1IHRocm91Z2ggVSswMkU5IChNb2RpZmllciBMZXR0
ZXJzIDogVG9uZSBsZXR0ZXJzKSAgCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGMgPD0gMHgyRTkpIAotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDMwMCkgLy8gVSsw
MzAwIHRocm91Z2ggVSswMzZGIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MzZGKQotICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAg
ICAgaWYgKGMgPCAweDA1OTEgfHwgYyA9PSAweDA1QkUpIC8vIFUrMDU5MSB0aHJvdWdoIFUrMDVD
RiBleGNsdWRpbmcgVSswNUJFIEhlYnJldyBjb21iaW5pbmcgbWFya3MsIEhlYnJldyBwdW5jdHVh
dGlvbiBQYXNlcSwgU29mIFBhc3VxIGFuZCBOdW4gSGFmdWtoYQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChjIDw9IDB4MDVDRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4
OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIC8vIFUr
MDYwMCB0aHJvdWdoIFUrMTA5RiBBcmFiaWMsIFN5cmlhYywgVGhhYW5hLCBOS28sIFNhbWFyaXRh
biwgTWFuZGFpYywKICAgICAgICAgLy8gRGV2YW5hZ2FyaSwgQmVuZ2FsaSwgR3VybXVraGksIEd1
amFyYXRpLCBPcml5YSwgVGFtaWwsIFRlbHVndSwgS2FubmFkYSwgCkBAIC02ODQsOTcgKzY4NCw5
NyBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29k
ZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcgogICAgICAgICBpZiAoYyA8IDB4MDYwMCkgCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxMDlGKQotICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7
CiAKICAgICAgICAgLy8gVSsxMTAwIHRocm91Z2ggVSsxMUZGIEhhbmd1bCBKYW1vIChvbmx5IEFu
Y2llbnQgS29yZWFuIHNob3VsZCBiZSBsZWZ0IGhlcmUgaWYgeW91IHByZWNvbXBvc2U7CiAgICAg
ICAgIC8vIE1vZGVybiBLb3JlYW4gd2lsbCBiZSBwcmVjb21wb3NlZCBhcyBhIHJlc3VsdCBvZiBz
dGVwIEEpCiAgICAgICAgIGlmIChjIDwgMHgxMTAwKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmIChjIDw9IDB4MTFGRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAg
ICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgx
MzVEKSAvLyBVKzEzNUQgdGhyb3VnaCBVKzEzNUYgRXRoaW9waWMgY29tYmluaW5nIG1hcmtzCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxMzVGKQotICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7
CiAKICAgICAgICAgaWYgKGMgPCAweDE3MDApIC8vIFUrMTc4MCB0aHJvdWdoIFUrMThBRiBUYWdh
bG9nLCBIYW51bm9vLCBCdWhpZCwgVGFnaGFud2EsS2htZXIsIE1vbmdvbGlhbgogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MThBRikKLSAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAg
ICAgIGlmIChjIDwgMHgxOTAwKSAvLyBVKzE5MDAgdGhyb3VnaCBVKzE5NEYgTGltYnUgKFVuaWNv
ZGUgNC4wKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTk0RikK
LSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRo
OjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxOTgwKSAvLyBVKzE5ODAgdGhyb3VnaCBV
KzE5REYgTmV3IFRhaSBMdWUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8
PSAweDE5REYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVy
biBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MUEwMCkgLy8gVSsxQTAw
IHRocm91Z2ggVSsxQ0ZGIEJ1Z2luZXNlLCBUYWkgVGhhbSwgQmFsaW5lc2UsIEJhdGFrLCBMZXBj
aGEsIFZlZGljCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxQ0ZG
KQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDFEQzApIC8vIFUrMURDMCB0aHJvdWdo
IFUrMURGRiBDb21pbmluZyBkaWFjcml0aWNhbCBtYXJrIHN1cHBsZW1lbnQKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDFERkYpCi0gICAgICAgICAgICByZXR1cm4g
Q29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAg
ICAvLyBVKzFFMDAgdGhyb3VnaCBVKzIwMDAgY2hhcmFjdGVycyB3aXRoIGRpYWNyaXRpY3MgYW5k
IHN0YWNrZWQgZGlhY3JpdGljcwogICAgICAgICBpZiAoYyA8PSAweDIwMDApIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IFNpbXBsZVdpdGhHbHlwaE92ZXJmbG93OworICAgICAgICAgICAgcmVzdWx0
ID0gQ29kZVBhdGg6OlNpbXBsZVdpdGhHbHlwaE92ZXJmbG93OwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYyA8IDB4MjBEMCkgLy8gVSsyMEQwIHRocm91
Z2ggVSsyMEZGIENvbWJpbmluZyBtYXJrcyBmb3Igc3ltYm9scwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChjIDw9IDB4MjBGRikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4
OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChj
IDwgMHgyNkY5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDwgMHgyNkZB
KQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDJDRUYpIC8vIFUrMkNFRiB0aHJvdWdo
IFUrMkNGMSBDb21iaW5pbmcgbWFya3MgZm9yIENvcHRpYwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChjIDw9IDB4MkNGMSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4Owor
ICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwg
MHgzMDJBKSAvLyBVKzMwMkEgdGhyb3VnaCBVKzMwMkYgSWRlb2dyYXBoaWMgYW5kIEhhbmd1bCBU
b25lIG1hcmtzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgzMDJG
KQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDMwOTkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGMgPCAweDMwOUQpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsgLy8gS0FUQUtBTkEtSElSQUdBTkEgKFNFTUktKVZPSUNFRCBTT1VORCBNQVJLUyByZXF1aXJl
IGNoYXJhY3RlciBjb21wb3NpdGlvbgorICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OyAvLyBLQVRBS0FOQS1ISVJBR0FOQSAoU0VNSS0pVk9JQ0VEIFNPVU5EIE1BUktTIHJlcXVp
cmUgY2hhcmFjdGVyIGNvbXBvc2l0aW9uCiAKICAgICAgICAgaWYgKGMgPCAweEE2N0MpIC8vIFUr
QTY3QyB0aHJvdWdoIFUrQTY3RCBDb21iaW5pbmcgbWFya3MgZm9yIG9sZCBDeXJpbGxpYwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4QTY3RCkKLSAgICAgICAgICAg
IHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4Owog
CiAgICAgICAgIGlmIChjIDwgMHhBNkYwKSAvLyBVK0E2RjAgdGhyb3VnaCBVK0E2RjEgQ29tYmlu
aW5nIG1hcmsgZm9yIEJhbXVtCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMg
PD0gMHhBNkYxKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1
cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgLy8gVStBODAwIHRocm91Z2ggVStBQkZG
IE5hZ3JpLCBQaGFncy1wYSwgU2F1cmFzaHRyYSwgRGV2YW5hZ2FyaSBFeHRlbmRlZCwKICAgICAg
ICAgLy8gSGFuZ3VsIEphbW8gRXh0LiBBLCBKYXZhbmVzZSwgTXlhbm1hciBFeHRlbmRlZCBBLCBU
YWkgVmlldCwgTWVldGVpIE1heWVrLAogICAgICAgICBpZiAoYyA8IDB4QTgwMCkgCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhBQkZGKQotICAgICAgICAgICAgcmV0
dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAg
ICAgICAgaWYgKGMgPCAweEQ3QjApIC8vIFUrRDdCMCB0aHJvdWdoIFUrRDdGRiBIYW5ndWwgSmFt
byBFeHQuIEIKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEQ3RkYp
Ci0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0
aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8PSAweERCRkYpIHsKICAgICAgICAgICAgIC8v
IEhpZ2ggc3Vycm9nYXRlCkBAIC03OTEsNjYgKzc5MSw2NiBAQCBGb250Q2FzY2FkZTo6Q29kZVBh
dGggRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcgogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDEwQTAwKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlD
aGFyYWN0ZXIgPCAweDEwQTYwKSAvLyBLaGFyb3NodGhpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAg
ICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMDAwKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIg
PCAweDExMDgwKSAvLyBCcmFobWkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAo
c3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEwRDApIC8vIEthaXRoaQotICAgICAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTEwMCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5
Q2hhcmFjdGVyIDwgMHgxMTE1MCkgLy8gQ2hha21hCi0gICAgICAgICAgICAgICAgcmV0dXJuIENv
bXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAg
ICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMTgwKSAvLyBNYWhhamFuaQot
ICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHgxMTFFMCkgLy8gU2hhcmFkYQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4Owor
ICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlm
IChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTIwMCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTI1MCkg
Ly8gS2hvamtpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPCAweDExMkIwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMzAwKSAvLyBLaHVkYXdhZGkK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MTEzODApIC8vIEdyYW50aGEKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBp
ZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE0MDApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE0ODAp
IC8vIE5ld2EKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFy
eUNoYXJhY3RlciA8IDB4MTE0RTApIC8vIFRpcmh1dGEKLSAgICAgICAgICAgICAgICByZXR1cm4g
Q29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAg
ICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE1ODApCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8
IDB4MTE2MDApIC8vIFNpZGRoYW0KLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAo
c3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE2NjApIC8vIE1vZGkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTE2ODApCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNo
YXJhY3RlciA8IDB4MTE2RDApIC8vIFRha3JpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAg
ICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNzAwKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDEx
QzAwKSAvLyBBaG9tLCBEb2dyYSwgRGl2ZXMgQWt1cnUsIE5hbmRpbmFnYXJpLCBaYW5hYmF6YXIg
U3F1YXJlLCBTb3lvbWJvLCBXYXJhbmcgQ2l0aSwgUGF1IENpbiBIYXUKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTFDNzApIC8v
IEJoYWlrc3VraQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50
YXJ5Q2hhcmFjdGVyIDwgMHgxMUNDMCkgLy8gTWFyY2hlbgotICAgICAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAg
ICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxRTkwMCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHgxRTk2MCkgLy8gQWRsYW0KLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAo
c3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MUYxRTYpIC8vIFUrMUYxRTYgdGhyb3VnaCBVKzFG
MUZGIFJlZ2lvbmFsIEluZGljYXRvciBTeW1ib2xzCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8PSAweDFGMUZGKQotICAg
ICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2Rl
UGF0aDo6Q29tcGxleDsKIAogICAgICAgICAgICAgaWYgKGlzRW1vamlGaXR6cGF0cmlja01vZGlm
aWVyKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAg
ICAgIGlmIChpc0Vtb2ppR3JvdXBDYW5kaWRhdGUoc3VwcGxlbWVudGFyeUNoYXJhY3RlcikpIHsK
ICAgICAgICAgICAgICAgICBwcmV2aW91c0NoYXJhY3RlcklzRW1vamlHcm91cENhbmRpZGF0ZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC04NTksMTEgKzg1OSwxMSBAQCBG
b250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcgogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFy
YWN0ZXIgPCAweEUwMDAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweEUwMDgwKSAvLyBUYWdzCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpD
b21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweEUwMTAw
KSAvLyBVK0UwMTAwIHRocm91Z2ggVStFMDFFRiBVbmljb2RlIHZhcmlhdGlvbiBzZWxlY3RvcnMu
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFy
eUNoYXJhY3RlciA8PSAweEUwMUVGKQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4Owor
ICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAgICAg
Ly8gRklYTUU6IENoZWNrIGZvciBCcmFobWkgKFUrMTEwMDAgYmxvY2spLCBLYWl0aGkgKFUrMTEw
ODAgYmxvY2spIGFuZCBvdGhlciBjb21wbGV4IHNjcmlwdHMKICAgICAgICAgICAgIC8vIGluIHBs
YW5lIDEgb3IgaGlnaGVyLgpAQCAtODc0LDEyICs4NzQsMTIgQEAgRm9udENhc2NhZGU6OkNvZGVQ
YXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXIKICAgICAgICAgaWYgKGMgPCAweEZFMDApIC8vIFUrRkUwMCB0aHJvdWdoIFUrRkUwRiBV
bmljb2RlIHZhcmlhdGlvbiBzZWxlY3RvcnMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoYyA8PSAweEZFMEYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4RkUyMCkg
Ly8gVStGRTIwIHRocm91Z2ggVStGRTJGIENvbWJpbmluZyBoYWxmIG1hcmtzCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhGRTJGKQotICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgfQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAppbmRleCAyNWMyNThiNTQyNzFlMDFiZWUyODhmZDgzYzdmMDE1Nzk3
YmIzOTlhLi44N2E1MWE3MDJkMzU0MGMwNmZlOWNmYzJmM2JhODkzMmJiZTlkNzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTM0LDEy
ICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi0vLyAiWDExL1guaCIgZGVmaW5lcyBDb21wbGV4IHRvIDAg
YW5kIGNvbmZsaWN0cwotLy8gd2l0aCBDb21wbGV4IHZhbHVlIGluIENvZGVQYXRoIGVudW0uCi0j
aWZkZWYgQ29tcGxleAotI3VuZGVmIENvbXBsZXgKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTkzLDYgKzg3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgb3BlcmF0b3IoKShUZXh0TGF5b3V0KikgY29uc3Q7CiB9OwogCitlbnVtIGNsYXNz
IENvZGVQYXRoIDogdWludDhfdCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEds
eXBoT3ZlcmZsb3cgfTsKKwogY2xhc3MgRm9udENhc2NhZGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Rm9udENhc2NhZGU+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBGb250Q2FzY2Fk
ZSgpOwpAQCAtMTg5LDkgKzE4NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzU3Vi
cGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAotICAgIGVudW0gQ29kZVBhdGggeyBBdXRv
LCBTaW1wbGUsIENvbXBsZXgsIFNpbXBsZVdpdGhHbHlwaE92ZXJmbG93IH07CiAgICAgQ29kZVBh
dGggY29kZVBhdGgoY29uc3QgVGV4dFJ1biYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tID0gV1RG
OjpudWxsb3B0LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNvbnN0Owot
ICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQpIHsgcmV0dXJuIFNpbXBsZTsgfQorICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0
ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRo
OjpTaW1wbGU7IH0KICAgICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbik7CiAKICAgICBib29sIHByaW1hcnlGb250SXNTeXN0
ZW1Gb250KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
V2ViQ29yZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2Vi
Q29yZVRleHRSZW5kZXJlci5jcHAKaW5kZXggOTcyMmJlZjZkYTAwYWM0NzJlZTYyZmI1MjdjMTg0
OWJlODI1MDA4MS4uNDZiYzc4NzQ2YzkxNjcyODQxZDVmYzBlOTJmYTU4ZDhjMjhiNjBmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVy
LmNwcApAQCAtMTA2LDEyICsxMDYsMTIgQEAgYm9vbCBXZWJDb3JlU2hvdWxkVXNlRm9udFNtb290
aGluZygpCiAKIHZvaWQgV2ViQ29yZVNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJv
b2wgY29tcGxleCkKIHsKLSAgICBGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoY29tcGxleCA/IEZv
bnRDYXNjYWRlOjpDb21wbGV4IDogRm9udENhc2NhZGU6OkF1dG8pOworICAgIEZvbnRDYXNjYWRl
OjpzZXRDb2RlUGF0aChjb21wbGV4ID8gQ29kZVBhdGg6OkNvbXBsZXggOiBDb2RlUGF0aDo6QXV0
byk7CiB9CiAKIGJvb2wgV2ViQ29yZUFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKCkKIHsK
LSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNvZGVQYXRoKCkgPT0gRm9udENhc2NhZGU6OkNvbXBs
ZXg7CisgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjb2RlUGF0aCgpID09IENvZGVQYXRoOjpDb21w
bGV4OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKaW5kZXggNTA2YjBlMTRlYjQxOGJiZTUzNTU4OGEyOTQ3MTI0MTRlMjVl
N2JmYy4uZTM0MmM5MGMxOTA3YzI0NTljZmRlZjYzYTI4NmYyNWQ5ZWMwYTVkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTQzMiw3ICsxNDMyLDcgQEAgYm9v
bCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSBjb25z
dAogICAgIC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCiAgICAgVGV4
dFJ1biBydW4obV90ZXh0KTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZh
bHNlKTsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUp
CisgICAgaWYgKGZvbnQuY29kZVBhdGgocnVuKSAhPSBDb2RlUGF0aDo6U2ltcGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCA9IHN0eWxl
KCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBib29sIFJlbmRl
clRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSBjb25zdAogewogICAgIGlm
IChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgodGV4dCgpLmNo
YXJhY3RlcnMxNigpLCBsZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6OlNpbXBsZTsKKyAgICByZXR1
cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgodGV4dCgpLmNoYXJhY3RlcnMx
NigpLCBsZW5ndGgoKSkgPT0gQ29kZVBhdGg6OlNpbXBsZTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0
Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRl
ckxhc3RUeXBlZENoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCBhOTRjYTI5OTFjMWE0YWJhOWE1
MmVlZWQ2YWJlZWFlNjdiN2FkNmU1Li4zMjhlODU3MzAzM2QyNGI1YjgwZjdkZTBmZGQ5YmQ1M2Nk
NjllZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTVkdUZXh0TWV0
cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVy
U1ZHSW5saW4KIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2FsZWRGb250ID0gdGV4dC5zY2Fs
ZWRGb250KCk7CiAgICAgbV9ydW4gPSBTVkdUZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bih0
ZXh0KTsKLSAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250LmNvZGVQYXRoKG1fcnVuKSA9
PSBGb250Q2FzY2FkZTo6Q29tcGxleDsKKyAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250
LmNvZGVQYXRoKG1fcnVuKSA9PSBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgIGlmIChtX2lzQ29t
cGxleFRleHQpCiAgICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWVkNWM2ZjIwY2QxYmJlMWU5
MDZlN2Q5NDA3ZmM0ZjllODk0ODZmYi4uNDEyM2JiYjExMTAyMWY3ZTkwZWNjM2Y3MjdlMTMxNjNj
MDE1ZjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjU1
LDcgKzY1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50
ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRBbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewot
ICAgIFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChhbHdheXNVc2VDb21wbGV4VGV4
dCA/IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpDb21wbGV4IDogV2ViQ29yZTo6Rm9udENhc2NhZGU6
OkF1dG8pOworICAgIFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChhbHdheXNVc2VD
b21wbGV4VGV4dCA/IFdlYkNvcmU6OkNvZGVQYXRoOjpDb21wbGV4IDogV2ViQ29yZTo6Q29kZVBh
dGg6OkF1dG8pOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZFVzZUZvbnRTbW9vdGhp
bmcoYm9vbCB1c2VGb250U21vb3RoaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IDc4ZWUwY2M1OThkMmI5YmRjZjJlZjM0YzZhNWQ3N2Y5NWI2NmY5
YzcuLmVhNTBlZjc3ODhkMWUzNWUzZTA3Yjk0YTVmZTA1OGIyZDFjZTQ3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIyMjEsNyArMjIyMSw3IEBA
IHN0YXRpYyBOU011dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKIAogKyAodm9pZClf
c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGg6KEJPT0wpZgogewotICAgIFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChmID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvbXBs
ZXggOiBXZWJDb3JlOjpGb250Q2FzY2FkZTo6QXV0byk7CisgICAgV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OnNldENvZGVQYXRoKGYgPyBXZWJDb3JlOjpDb2RlUGF0aDo6Q29tcGxleCA6IFdlYkNvcmU6
OkNvZGVQYXRoOjpBdXRvKTsKIH0KIAogKyAoQk9PTCljYW5DbG9zZUFsbFdlYlZpZXdzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416363</attachid>
            <date>2020-12-16 14:37:02 -0800</date>
            <delta_ts>2020-12-16 23:28:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201216233700.patch</filename>
            <type>text/plain</type>
            <size>29276</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk3MmIxNjA4MDQ3NDdm
ODk5MTAxMjk1YWZmNDhjMmUyOGYxMDQ3MS4uOTUwZTkzMGM2NTZjZjg2ZWFkODFjMzhmYTYwYTYw
YjI5MDY4NzJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29kZVBhdGggYW4gZW51bSBjbGFzcy4gQmVz
aWRlcyB0aGUKKyAgICAgICAgdXN1YWwgZW51bSBjbGFzcyBiZW5lZml0cywgb25lIGFkZGl0aW9u
YWwgbmljZSB0aGluZworICAgICAgICBpcyB0aGF0IGl0IHJlbW92ZWQgdGhlIG5lZWQgZm9yIHRo
ZSAiQ29tcGxleCIgaWZkZWYuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6Y2FuVXNlRm9yRm9udEFuZFRleHQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojpp
c05lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFRleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpjb2RlUGF0aCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU2V0
QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZUFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJl
bmRlcmVyKToKKwogMjAyMC0xMi0xNiAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsICA8dmph
cXVlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtEZWJ1Z11bR1N0cmVhbWVyXSBDcmFzaCBpbiBm
YXN0L21lZGlhc3RyZWFtL2NoYW5nZS10cmFja3MtbWVkaWEtc3RyZWFtLWJlaW5nLXBsYXllZC5o
dG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDk3Njk5MzlkZDQzYTVlMGI3Mjk5YmI3NjVhMDYyZTNmZjc5YzI2NTQu
LjAzNjdkZjYxM2IxOTRkNDc5MDYzNGJjNjY1MTZkYTU3MmRlOGY3NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMTItMTYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBhbiBlbnVtIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGFwdCB0byBlbnVtIGNs
YXNzIGNoYW5nZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
KToKKwogMjAyMC0xMi0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiBbaU9TXSBGbGFreSBHUFUgUHJvY2VzcyBjcmFzaCB1bmRlciAtW1JU
Q1ZpZGVvRW5jb2RlckgyNjQgZGVzdHJveUNvbXByZXNzaW9uU2Vzc2lvbl0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCAxYjRhMzJkMzdiYmFhMzk1MzU1ODNkMmM4NTExMmE2ZWU5NThl
ZDYzLi4xNTVkMzk1MGM3MzZlMDJmZDlmYjc1N2NmNTM0YjJlYzM2NmFlZmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTItMTYgIFJvYiBCdWlz
ICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpDb2RlUGF0
aCBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTk5NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGFwdCB0byBlbnVtIGNsYXNzIGNoYW5nZS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0
Q29kZVBhdGg6XSk6CisKIDIwMjAtMTItMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDc2OC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVy
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkNvdmVyYWdlLmNwcAppbmRleCA1ZGRjMjc2YWVhZGJlZGVlMjYzY2FmYmVjYzFlOWE0ZmI1
N2EwYWVjLi5kZmVkYzQxMTIzMDc1OTU0OTgzYzkzYjVjYTgzZmRjNDc5NmY2OWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25D
b3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGljIE9wdGlv
blNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdlYkNvcmU6OlRleHRS
dW4gcnVuKFN0cmluZyh0ZXh0UmVuZGVyZXIudGV4dCgpKSk7CiAgICAgICAgICAgICBydW4uc2V0
Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChzdHlsZS5m
b250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkKKyAgICAg
ICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2Nh
ZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVU
VVJOX0lGX05FRURFRChGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0aCwgcmVhc29ucywgaW5jbHVk
ZVJlYXNvbnMpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBhYjQxNGEwOWFhZmRiODgy
ODgzNTRlZTMwNzRiZTYzNjM0MDY4MmViLi4wYmQwYzNhMzVjM2NmMTIwNDViNjkxN2ZiZGUwYTNl
MjY1MmUzYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxMYXlvdXRTaXplPiBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRDb250aW51
YXRpb24oY29uCiAKIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKGNv
bnN0IFN0cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHdo
aXRlc3BhY2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChUZXh0UnVuKGNv
bnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleCkKKyAgICBpZiAoZm9udC5jb2RlUGF0aChU
ZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChmb250LndvcmRTcGFjaW5nKCkgfHwgZm9udC5s
ZXR0ZXJTcGFjaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBmNmI1ZjBlMzhkYjgzZTll
YzA1MGI1ZTFkYWUzNTEwOTA5OWU1YTc2Li42MGQ5MzNjYWY5MWM2YzBlM2E0MjkxZGVhNDYxZmRm
NTk1ZmU2ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGlzTmVlZGVkKFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250KQogICAgIHsKICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwotICAgICAgICByZXR1cm4gZm9u
dC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OworICAgICAgICByZXR1cm4g
Zm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleDsKICAg
ICB9CiAKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBmbG9hdCB4UG9zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGNkNjJlZWVhYjc2NDAzZTdmN2UzNjMyOTI2ZWI2MmEx
NTEzNGJkYmYuLmQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgc3RhdGljIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5
KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKICAgICByZXR1cm4gc2V0LmdldCgpLmNvbnRhaW5z
KGZhbWlseSk7CiB9CiAKLUZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2Rl
UGF0aCA9IEF1dG87CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBh
dGggPSBDb2RlUGF0aDo6QXV0bzsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIC8vIEZvbnRDYXNjYWRlIEltcGxlbWVudGF0aW9uIChDcm9zcy1QbGF0Zm9ybSBQb3J0
aW9uKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8
Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKIAogR2x5cGhCdWZmZXIgRm9udENh
c2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYg
cnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9y
VGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgp
CisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJl
dHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNpcyk7CiAK
ICAgICByZXR1cm4gbGF5b3V0Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZm9yVGV4dEVtcGhh
c2lzKTsKQEAgLTMzMSw4ICszMzEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIAog
ICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0
aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEwMDA1MAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwot
ICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCBy
ZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxlbmd0aCgp
KSkKLSAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CisgICAgaWYgKGNvZGVQYXRoVG9V
c2UgIT0gQ29kZVBhdGg6OkNvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1aXJlc1No
YXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxlbmd0aCgpKSkKKyAgICAg
ICAgY29kZVBhdGhUb1VzZSA9IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgYXV0byBnbHlwaEJ1
ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbik7
CiAgICAgZ2x5cGhCdWZmZXIuZmxhdHRlbigpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsKIAogICAgIGF1dG8gY29k
ZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgPT0gQ29t
cGxleCkgeworICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4KSB7CiAg
ICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb21wbGV4SXRlcmF0b3IoKnRoaXMsIHJ1biwg
ZmFsc2UsIGZhbGxiYWNrRm9udHMpOwogICAgICAgICBjb21wbGV4SXRlcmF0b3IuYWR2YW5jZShm
cm9tLCBudWxscHRyLCBJbmNsdWRlUGFydGlhbEdseXBocywgZmFsbGJhY2tGb250cyk7CiAgICAg
ICAgIG9mZnNldEJlZm9yZVJhbmdlID0gY29tcGxleEl0ZXJhdG9yLnJ1bldpZHRoU29GYXIoKTsK
QEAgLTM5OCwxMiArMzk4LDEyIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25zdCBUZXh0
UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0g
ICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvZGVQYXRoOjpDb21wbGV4KSB7CiAgICAgICAgIC8vIFRoZSBjb21wbGV4IHBhdGggaXMg
bW9yZSByZXN0cmljdGl2ZSBhYm91dCByZXR1cm5pbmcgZmFsbGJhY2sgZm9udHMgdGhhbiB0aGUg
c2ltcGxlIHBhdGgsIHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgdGVzdCB0byBtYWtlIHRoZWlyIGJl
aGF2aW9ycyBtYXRjaC4KICAgICAgICAgaWYgKCFjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29t
cGxleFRleHQoKSkKICAgICAgICAgICAgIGZhbGxiYWNrRm9udHMgPSBudWxscHRyOwogICAgICAg
ICAvLyBUaGUgc2ltcGxlIHBhdGggY2FuIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIGdseXBoIG92
ZXJmbG93IGlzIG5vdCBvYnNlcnZhYmxlLgotICAgICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBT
aW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5cGhPdmVyZmxv
dy0+Y29tcHV0ZUJvdW5kcykpCisgICAgICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvZGVQYXRo
OjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5cGhPdmVy
Zmxvdy0+Y29tcHV0ZUJvdW5kcykpCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93ID0gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGgo
Y29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cwog
ICAgICAgICBmYWxsYmFja0ZvbnRzID0gJmxvY2FsRmFsbGJhY2tGb250czsKIAogICAgIGZsb2F0
IHJlc3VsdDsKLSAgICBpZiAoY29kZVBhdGhUb1VzZSA9PSBDb21wbGV4KQorICAgIGlmIChjb2Rl
UGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXN1bHQgPSBmbG9hdFdp
ZHRoRm9yQ29tcGxleFRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKICAg
ICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KHJ1biwgZmFs
bGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CkBAIC00MzEsNyArNDMxLDcgQEAgZmxvYXQgRm9u
dENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rp
b24gdGV4dERpcmVjdGkKIHsKICAgICBpZiAodGV4dC5pc051bGwoKSB8fCB0ZXh0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKGNvZGVQYXRoKFRleHRSdW4odGV4dCkp
ICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KTsKKyAgICBBU1NFUlQoY29kZVBhdGgoVGV4dFJ1bih0
ZXh0KSkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpOwogICAgIGZsb2F0KiBjYWNoZUVudHJ5ID0gbV9m
b250cy0+d2lkdGhDYWNoZSgpLmFkZCh0ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
cXVpZXRfTmFOKCkpOwogICAgIGlmIChjYWNoZUVudHJ5ICYmICFzdGQ6OmlzbmFuKCpjYWNoZUVu
dHJ5KSkKICAgICAgICAgcmV0dXJuICpjYWNoZUVudHJ5OwpAQCAtNTQ2LDcgKzU0Niw3IEBAIGJv
b2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQmIHdp
ZHRoKSBjb25zdAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBm
cm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGlu
YXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7Ci0gICAgaWYgKGNvZGVQYXRoKHJ1biwg
ZnJvbSwgdG8pICE9IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pICE9
IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9uUmVjdEZv
clNpbXBsZVRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7CiAKICAg
ICByZXR1cm4gYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KHJ1biwgc2VsZWN0aW9u
UmVjdCwgZnJvbSwgZGVzdGluYXRpb24pOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgRm9udENh
c2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5
b3V0UmVjdCYgc2VsCiAKIGludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24oY29uc3Qg
VGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAog
ewotICAgIGlmIChjb2RlUGF0aChydW4sIHgpICE9IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRo
KHJ1biwgeCkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBvZmZzZXRGb3JQ
b3NpdGlvbkZvclNpbXBsZVRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAKICAg
ICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChydW4sIHgsIGluY2x1ZGVQ
YXJ0aWFsR2x5cGhzKTsKQEAgLTYxNCwxMyArNjE0LDEzIEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0
aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogCiBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENh
c2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgT3B0aW9uYWw8dW5zaWduZWQ+IGZy
b20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICBpZiAoc19jb2RlUGF0aCAh
PSBBdXRvKQorICAgIGlmIChzX2NvZGVQYXRoICE9IENvZGVQYXRoOjpBdXRvKQogICAgICAgICBy
ZXR1cm4gc19jb2RlUGF0aDsKIAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVz
ZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtl
cm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCiAgICAg
aWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVl
T3IoMCkgfHwgdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkpCi0gICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKICAgICBVTlVTRURfUEFSQU0odG8pOwpAQCAt
NjMwLDE5ICs2MzAsMTkgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2Rl
UGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUKICAgICAvLyBCZWNhdXNl
IEZvbnQ6OmFwcGx5VHJhbnNmb3JtcygpIGRvZXNuJ3Qga25vdyB3aGljaCBmZWF0dXJlcyB0byBl
bmFibGUvZGlzYWJsZSBpbiB0aGUgc2ltcGxlIGNvZGUgcGF0aCwgaXQgY2FuJ3QgcHJvcGVybHkg
aGFuZGxlIGZlYXR1cmUgb3IgdmFyaWFudCBzZXR0aW5ncy4KICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MTogQGZvbnQtZmFjZSBmZWF0
dXJlcyBzaG91bGQgYWxzbyBjYXVzZSB0aGlzIHRvIGJlIGNvbXBsZXguCiAgICAgaWYgKG1fZm9u
dERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSA+IDAgfHwgIW1fZm9udERlc2Ny
aXB0aW9uLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCi0gICAgICAgIHJldHVybiBD
b21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICNlbHNlCiAKICAg
ICBpZiAocnVuLmxlbmd0aCgpID4gMSAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hh
cGluZygpKSkKLSAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgIHJldHVybiBDb2RlUGF0
aDo6Q29tcGxleDsKICNlbmRpZgogCiAgICAgaWYgKCFydW4uY2hhcmFjdGVyU2NhbkZvckNvZGVQ
YXRoKCkpCi0gICAgICAgIHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBDb2RlUGF0aDo6
U2ltcGxlOwogCiAgICAgaWYgKHJ1bi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFNpbXBsZTsK
KyAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7CiAKICAgICAvLyBTdGFydCBmcm9tIDAg
c2luY2UgZHJhd2luZyBhbmQgaGlnaGxpZ2h0aW5nIGFsc28gbWVhc3VyZSB0aGUgY2hhcmFjdGVy
cyBiZWZvcmUgcnVuLT5mcm9tLgogICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKHJ1
bi5jaGFyYWN0ZXJzMTYoKSwgcnVuLmxlbmd0aCgpKTsKQEAgLTY1NSwyOCArNjU1LDI4IEBAIEZv
bnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChj
b25zdCBVQ2hhciogY2hhcmFjdGVyCiAgICAgLy8gYXJlIG5vdCAnY29tYmluaW5nJywgYnV0IHN0
aWxsIG5lZWQgdG8gZ28gdG8gdGhlIGNvbXBsZXggcGF0aC4KICAgICAvLyBBbHRlcm5hdGl2ZWx5
LCB3ZSBtYXkgYXMgd2VsbCBjb25zaWRlciBiaW5hcnkgc2VhcmNoIG92ZXIgYSBzb3J0ZWQKICAg
ICAvLyBsaXN0IG9mIHJhbmdlcy4KLSAgICBDb2RlUGF0aCByZXN1bHQgPSBTaW1wbGU7CisgICAg
Q29kZVBhdGggcmVzdWx0ID0gQ29kZVBhdGg6OlNpbXBsZTsKICAgICBib29sIHByZXZpb3VzQ2hh
cmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIGMgPSBjaGFyYWN0ZXJz
W2ldOwogICAgICAgICBpZiAoYyA9PSB6ZXJvV2lkdGhKb2luZXIgJiYgcHJldmlvdXNDaGFyYWN0
ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgCiAgICAgICAgIHBy
ZXZpb3VzQ2hhcmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAgICAgIGlm
IChjIDwgMHgyRTUpIC8vIFUrMDJFNSB0aHJvdWdoIFUrMDJFOSAoTW9kaWZpZXIgTGV0dGVycyA6
IFRvbmUgbGV0dGVycykgIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9
IDB4MkU5KSAKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJu
IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDApIC8vIFUrMDMwMCB0
aHJvdWdoIFUrMDM2RiBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDM2RikKLSAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlm
IChjIDwgMHgwNTkxIHx8IGMgPT0gMHgwNUJFKSAvLyBVKzA1OTEgdGhyb3VnaCBVKzA1Q0YgZXhj
bHVkaW5nIFUrMDVCRSBIZWJyZXcgY29tYmluaW5nIG1hcmtzLCBIZWJyZXcgcHVuY3R1YXRpb24g
UGFzZXEsIFNvZiBQYXN1cSBhbmQgTnVuIEhhZnVraGEKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoYyA8PSAweDA1Q0YpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAvLyBVKzA2MDAg
dGhyb3VnaCBVKzEwOUYgQXJhYmljLCBTeXJpYWMsIFRoYWFuYSwgTktvLCBTYW1hcml0YW4sIE1h
bmRhaWMsCiAgICAgICAgIC8vIERldmFuYWdhcmksIEJlbmdhbGksIEd1cm11a2hpLCBHdWphcmF0
aSwgT3JpeWEsIFRhbWlsLCBUZWx1Z3UsIEthbm5hZGEsIApAQCAtNjg0LDk3ICs2ODQsOTcgQEAg
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgaWYgKGMgPCAweDA2MDApIAogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTA5RikKLSAgICAgICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAg
ICAgICAgIC8vIFUrMTEwMCB0aHJvdWdoIFUrMTFGRiBIYW5ndWwgSmFtbyAob25seSBBbmNpZW50
IEtvcmVhbiBzaG91bGQgYmUgbGVmdCBoZXJlIGlmIHlvdSBwcmVjb21wb3NlOwogICAgICAgICAv
LyBNb2Rlcm4gS29yZWFuIHdpbGwgYmUgcHJlY29tcG9zZWQgYXMgYSByZXN1bHQgb2Ygc3RlcCBB
KQogICAgICAgICBpZiAoYyA8IDB4MTEwMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoYyA8PSAweDExRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MTM1RCkg
Ly8gVSsxMzVEIHRocm91Z2ggVSsxMzVGIEV0aGlvcGljIGNvbWJpbmluZyBtYXJrcwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTM1RikKLSAgICAgICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAg
ICAgICAgIGlmIChjIDwgMHgxNzAwKSAvLyBVKzE3ODAgdGhyb3VnaCBVKzE4QUYgVGFnYWxvZywg
SGFudW5vbywgQnVoaWQsIFRhZ2hhbndhLEtobWVyLCBNb25nb2xpYW4KICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE4QUYpCi0gICAgICAgICAgICByZXR1cm4gQ29t
cGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBp
ZiAoYyA8IDB4MTkwMCkgLy8gVSsxOTAwIHRocm91Z2ggVSsxOTRGIExpbWJ1IChVbmljb2RlIDQu
MCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE5NEYpCi0gICAg
ICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MTk4MCkgLy8gVSsxOTgwIHRocm91Z2ggVSsxOURG
IE5ldyBUYWkgTHVlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgx
OURGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDFBMDApIC8vIFUrMUEwMCB0aHJv
dWdoIFUrMUNGRiBCdWdpbmVzZSwgVGFpIFRoYW0sIEJhbGluZXNlLCBCYXRhaywgTGVwY2hhLCBW
ZWRpYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MUNGRikKLSAg
ICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpD
b21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxREMwKSAvLyBVKzFEQzAgdGhyb3VnaCBVKzFE
RkYgQ29taW5pbmcgZGlhY3JpdGljYWwgbWFyayBzdXBwbGVtZW50CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxREZGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgLy8g
VSsxRTAwIHRocm91Z2ggVSsyMDAwIGNoYXJhY3RlcnMgd2l0aCBkaWFjcml0aWNzIGFuZCBzdGFj
a2VkIGRpYWNyaXRpY3MKICAgICAgICAgaWYgKGMgPD0gMHgyMDAwKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKKyAgICAgICAgICAgIHJlc3VsdCA9IENv
ZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGMgPCAweDIwRDApIC8vIFUrMjBEMCB0aHJvdWdoIFUr
MjBGRiBDb21iaW5pbmcgbWFya3MgZm9yIHN5bWJvbHMKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoYyA8PSAweDIwRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4
MjZGOSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8IDB4MjZGQSkKLSAg
ICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpD
b21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgyQ0VGKSAvLyBVKzJDRUYgdGhyb3VnaCBVKzJD
RjEgQ29tYmluaW5nIG1hcmtzIGZvciBDb3B0aWMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBpZiAoYyA8PSAweDJDRjEpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MzAy
QSkgLy8gVSszMDJBIHRocm91Z2ggVSszMDJGIElkZW9ncmFwaGljIGFuZCBIYW5ndWwgVG9uZSBt
YXJrcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MzAyRikKLSAg
ICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpD
b21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDk5KQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChjIDwgMHgzMDlEKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7IC8v
IEtBVEFLQU5BLUhJUkFHQU5BIChTRU1JLSlWT0lDRUQgU09VTkQgTUFSS1MgcmVxdWlyZSBjaGFy
YWN0ZXIgY29tcG9zaXRpb24KKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsg
Ly8gS0FUQUtBTkEtSElSQUdBTkEgKFNFTUktKVZPSUNFRCBTT1VORCBNQVJLUyByZXF1aXJlIGNo
YXJhY3RlciBjb21wb3NpdGlvbgogCiAgICAgICAgIGlmIChjIDwgMHhBNjdDKSAvLyBVK0E2N0Mg
dGhyb3VnaCBVK0E2N0QgQ29tYmluaW5nIG1hcmtzIGZvciBvbGQgQ3lyaWxsaWMKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEE2N0QpCi0gICAgICAgICAgICByZXR1
cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAg
ICAgICBpZiAoYyA8IDB4QTZGMCkgLy8gVStBNkYwIHRocm91Z2ggVStBNkYxIENvbWJpbmluZyBt
YXJrIGZvciBCYW11bQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4
QTZGMSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENv
ZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIC8vIFUrQTgwMCB0aHJvdWdoIFUrQUJGRiBOYWdy
aSwgUGhhZ3MtcGEsIFNhdXJhc2h0cmEsIERldmFuYWdhcmkgRXh0ZW5kZWQsCiAgICAgICAgIC8v
IEhhbmd1bCBKYW1vIEV4dC4gQSwgSmF2YW5lc2UsIE15YW5tYXIgRXh0ZW5kZWQgQSwgVGFpIFZp
ZXQsIE1lZXRlaSBNYXllaywKICAgICAgICAgaWYgKGMgPCAweEE4MDApIAogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4QUJGRikKLSAgICAgICAgICAgIHJldHVybiBD
b21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAg
IGlmIChjIDwgMHhEN0IwKSAvLyBVK0Q3QjAgdGhyb3VnaCBVK0Q3RkYgSGFuZ3VsIEphbW8gRXh0
LiBCCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhEN0ZGKQotICAg
ICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNv
bXBsZXg7CiAKICAgICAgICAgaWYgKGMgPD0gMHhEQkZGKSB7CiAgICAgICAgICAgICAvLyBIaWdo
IHN1cnJvZ2F0ZQpAQCAtNzkxLDY2ICs3OTEsNjYgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZv
bnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIK
ICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMEEwMCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFj
dGVyIDwgMHgxMEE2MCkgLy8gS2hhcm9zaHRoaQotICAgICAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAg
ICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTAwMCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgx
MTA4MCkgLy8gQnJhaG1pCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBs
ZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMEQwKSAvLyBLYWl0aGkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7
CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTExMDApCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJh
Y3RlciA8IDB4MTExNTApIC8vIENoYWttYQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4
OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAg
IGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTE4MCkgLy8gTWFoYWphbmkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4
MTExRTApIC8vIFNoYXJhZGEKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3Vw
cGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyMDApCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyNTApIC8vIEto
b2praQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJl
dHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hh
cmFjdGVyIDwgMHgxMTJCMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTMwMCkgLy8gS2h1ZGF3YWRpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAw
eDExMzgwKSAvLyBHcmFudGhhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1
cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDgwKSAvLyBO
ZXdhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0
dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFy
YWN0ZXIgPCAweDExNEUwKSAvLyBUaXJodXRhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAg
ICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNTgwKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDEx
NjAwKSAvLyBTaWRkaGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBs
ZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjYwKSAvLyBNb2RpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4Owog
ICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjgwKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0
ZXIgPCAweDExNkQwKSAvLyBUYWtyaQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4Owor
ICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlm
IChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTcwMCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMUMwMCkg
Ly8gQWhvbSwgRG9ncmEsIERpdmVzIEFrdXJ1LCBOYW5kaW5hZ2FyaSwgWmFuYWJhemFyIFNxdWFy
ZSwgU295b21ibywgV2FyYW5nIENpdGksIFBhdSBDaW4gSGF1Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4Owog
ICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExQzcwKSAvLyBCaGFp
a3N1a2kKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNo
YXJhY3RlciA8IDB4MTFDQzApIC8vIE1hcmNoZW4KLSAgICAgICAgICAgICAgICByZXR1cm4gQ29t
cGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAg
ICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MUU5MDApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4
MUU5NjApIC8vIEFkbGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBs
ZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDFGMUU2KSAvLyBVKzFGMUU2IHRocm91Z2ggVSsxRjFGRiBS
ZWdpb25hbCBJbmRpY2F0b3IgU3ltYm9scwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPD0gMHgxRjFGRikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6
OkNvbXBsZXg7CiAKICAgICAgICAgICAgIGlmIChpc0Vtb2ppRml0enBhdHJpY2tNb2RpZmllcihz
dXBwbGVtZW50YXJ5Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBp
ZiAoaXNFbW9qaUdyb3VwQ2FuZGlkYXRlKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIpKSB7CiAgICAg
ICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODU5LDExICs4NTksMTEgQEAgRm9udENh
c2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHhFMDAwMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChz
dXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDA4MCkgLy8gVGFncwotICAgICAgICAgICAgICAg
IHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxl
eDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDEwMCkgLy8g
VStFMDEwMCB0aHJvdWdoIFUrRTAxRUYgVW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3JzLgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFy
YWN0ZXIgPD0gMHhFMDFFRikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDaGVjayBmb3IgQnJhaG1pIChVKzExMDAwIGJsb2NrKSwgS2FpdGhpIChVKzExMDgwIGJs
b2NrKSBhbmQgb3RoZXIgY29tcGxleCBzY3JpcHRzCiAgICAgICAgICAgICAvLyBpbiBwbGFuZSAx
IG9yIGhpZ2hlci4KQEAgLTg3NCwxMiArODc0LDEyIEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBG
b250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciogY2hhcmFjdGVy
CiAgICAgICAgIGlmIChjIDwgMHhGRTAwKSAvLyBVK0ZFMDAgdGhyb3VnaCBVK0ZFMEYgVW5pY29k
ZSB2YXJpYXRpb24gc2VsZWN0b3JzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGMgPD0gMHhGRTBGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICBy
ZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweEZFMjApIC8vIFUr
RkUyMCB0aHJvdWdoIFUrRkUyRiBDb21iaW5pbmcgaGFsZiBtYXJrcwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4RkUyRikKLSAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKaW5kZXggMjVjMjU4YjU0MjcxZTAxYmVlMjg4ZmQ4M2M3ZjAxNTc5N2JiMzk5
YS4uMTI3NzY0OGE3Y2U3M2JhYTcwMTZmMTVjN2ZmYTk3OWRjNTdkMjU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0zNCwxMiArMzQs
NiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAotLy8gIlgxMS9YLmgiIGRlZmluZXMgQ29tcGxleCB0byAwIGFuZCBj
b25mbGljdHMKLS8vIHdpdGggQ29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLgotI2lmZGVm
IENvbXBsZXgKLSN1bmRlZiBDb21wbGV4Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xODksOSArMTgzLDkgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgaXNTdWJwaXhlbEFudGlhbGlhc2luZ0F2YWlsYWJsZSgpOwogCi0gICAg
ZW51bSBDb2RlUGF0aCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3Zl
cmZsb3cgfTsKKyAgICBlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhfdCB7IEF1dG8sIFNpbXBs
ZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKICAgICBDb2RlUGF0aCBjb2Rl
UGF0aChjb25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBXVEY6Om51bGxv
cHQsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgc3Rh
dGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCkgeyByZXR1cm4gU2ltcGxlOyB9CisgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdl
Q29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gQ29kZVBhdGg6OlNpbXBs
ZTsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuKTsKIAogICAgIGJvb2wgcHJpbWFyeUZvbnRJc1N5c3RlbUZvbnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3Jl
VGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4
dFJlbmRlcmVyLmNwcAppbmRleCA5NzIyYmVmNmRhMDBhYzQ3MmVlNjJmYjUyN2MxODQ5YmU4MjUw
MDgxLi5hMjhjNzg3MWNiODNmMjhjNDhmMmYyM2I2MDAwYjI5NGE0M2Y3NWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCkBA
IC0xMDYsMTIgKzEwNiwxMiBAQCBib29sIFdlYkNvcmVTaG91bGRVc2VGb250U21vb3RoaW5nKCkK
IAogdm9pZCBXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBjb21w
bGV4KQogewotICAgIEZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChjb21wbGV4ID8gRm9udENhc2Nh
ZGU6OkNvbXBsZXggOiBGb250Q2FzY2FkZTo6QXV0byk7CisgICAgRm9udENhc2NhZGU6OnNldENv
ZGVQYXRoKGNvbXBsZXggPyBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXggOiBDb2RlUGF0
aDo6QXV0byk7CiB9CiAKIGJvb2wgV2ViQ29yZUFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
KCkKIHsKLSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNvZGVQYXRoKCkgPT0gRm9udENhc2NhZGU6
OkNvbXBsZXg7CisgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjb2RlUGF0aCgpID09IENvZGVQYXRo
OjpDb21wbGV4OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTA2YjBlMTRlYjQxOGJiZTUzNTU4OGEyOTQ3MTI0
MTRlMjVlN2JmYy4uZGI2ZGRmM2Q4MjNmOTQ2NzczODFjNzMzMzgyNGYzZjA5MWU1Y2ExMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTQzMiw3ICsxNDMyLDcg
QEAgYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmco
KSBjb25zdAogICAgIC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCiAg
ICAgVGV4dFJ1biBydW4obV90ZXh0KTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQ
YXRoKGZhbHNlKTsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpT
aW1wbGUpCisgICAgaWYgKGZvbnQuY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29kZVBh
dGg6OlNpbXBsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB3aGl0ZXNwYWNl
SXNDb2xsYXBzZWQgPSBzdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwpAQCAtMTc2Myw3ICsx
NzYzLDcgQEAgYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRo
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0FsbEFTQ0lJIHx8IHRleHQoKS5pczhCaXQoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5n
ZUNvZGVQYXRoKHRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpID09IEZvbnRDYXNjYWRl
OjpTaW1wbGU7CisgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KHRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0
aDo6U2ltcGxlOwogfQogCiB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5
cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwCmluZGV4IGE5NGNhMjk5MWMxYTRhYmE5YTUyZWVlZDZhYmVlYWU2N2I3YWQ2ZTUuLmUy
ZTY2NTBhNzAzOTlhZWFlNjZlNjA2MTZjMTczMmY5MmZlYjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1l
YXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbgogCiAgICAgY29uc3QgRm9u
dENhc2NhZGUmIHNjYWxlZEZvbnQgPSB0ZXh0LnNjYWxlZEZvbnQoKTsKICAgICBtX3J1biA9IFNW
R1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQpOwotICAgIG1faXNDb21wbGV4VGV4
dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnRDYXNjYWRlOjpDb21wbGV4Owor
ICAgIG1faXNDb21wbGV4VGV4dCA9IHNjYWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnRD
YXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCiAg
ICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWVkNWM2ZjIwY2QxYmJlMWU5MDZlN2Q5NDA3ZmM0
ZjllODk0ODZmYi4uNGJiMThhNjZjNzVhNDhjMzZlODY3NjFkMzBkYzMzZWViNzA5Y2FiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNjU1LDcgKzY1NSw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6c2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91Ymxl
IHRpbWVvdXRJbnRlcnZhbCkKIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRBbHdheXNVc2VzQ29tcGxl
eFRleHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogewotICAgIFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChhbHdheXNVc2VDb21wbGV4VGV4dCA/IFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpDb21wbGV4IDogV2ViQ29yZTo6Rm9udENhc2NhZGU6OkF1dG8pOworICAg
IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChhbHdheXNVc2VDb21wbGV4VGV4dCA/
IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleCA6IFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpDb2RlUGF0aDo6QXV0byk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2hvdWxk
VXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9vdGhpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzhlZTBjYzU5OGQyYjliZGNmMmVmMzRj
NmE1ZDc3Zjk1YjY2ZjljNy4uMjM5YjEwZDVhNzUwMWZmZjk0MjY2ZGI0ZjIwMmUyMmU1MmRlMjc5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjIy
MSw3ICsyMjIxLDcgQEAgc3RhdGljIE5TTXV0YWJsZVNldCAqa25vd25QbHVnaW5NSU1FVHlwZXMo
KQogCiArICh2b2lkKV9zZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aDooQk9PTClmCiB7
Ci0gICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRoKGYgPyBXZWJDb3JlOjpGb250
Q2FzY2FkZTo6Q29tcGxleCA6IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpBdXRvKTsKKyAgICBXZWJD
b3JlOjpGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoZiA/IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpD
b2RlUGF0aDo6Q29tcGxleCA6IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6QXV0byk7
CiB9CiAKICsgKEJPT0wpY2FuQ2xvc2VBbGxXZWJWaWV3cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416398</attachid>
            <date>2020-12-16 23:28:14 -0800</date>
            <delta_ts>2020-12-17 00:25:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201217082810.patch</filename>
            <type>text/plain</type>
            <size>29295</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk3MmIxNjA4MDQ3NDdm
ODk5MTAxMjk1YWZmNDhjMmUyOGYxMDQ3MS4uZmEzNjhmNWI3MmY0Y2IyNzY5Y2EwMWNkMzNjNGI3
NmRlOTM4NWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBhbiBlbnVtIGNsYXNzLiBC
ZXNpZGVzIHRoZQorICAgICAgICB1c3VhbCBlbnVtIGNsYXNzIGJlbmVmaXRzLCBvbmUgYWRkaXRp
b25hbCBuaWNlIHRoaW5nCisgICAgICAgIGlzIHRoYXQgaXQgcmVtb3ZlZCB0aGUgbmVlZCBmb3Ig
dGhlICJDb21wbGV4IiBpZmRlZi4KKworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpjYW5Vc2VGb3JGb250QW5kVGV4dCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5V
c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6
OmlzTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmNvZGVQYXRoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVT
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlQWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVDYW5V
c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0
UmVuZGVyZXIpOgorCiAyMDIwLTEyLTE2ICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2
amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0RlYnVnXVtHU3RyZWFtZXJdIENyYXNoIGlu
IGZhc3QvbWVkaWFzdHJlYW0vY2hhbmdlLXRyYWNrcy1tZWRpYS1zdHJlYW0tYmVpbmctcGxheWVk
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOTc2OTkzOWRkNDNhNWUwYjcyOTliYjc2NWEwNjJlM2ZmNzljMjY1
NC4uYjI2Zjc2NTI1OGYyZjAxMGM0ZjgzODI3YzM5NjdjMDUxM2E4YWNiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0xMi0xNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgor
CisgICAgICAgIE1ha2UgRm9udENhc2NhZGU6OkNvZGVQYXRoIGFuIGVudW0gY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQWRhcHQgdG8gZW51
bSBjbGFzcyBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2Rl
UGF0aCk6CisKIDIwMjAtMTItMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gW2lPU10gRmxha3kgR1BVIFByb2Nlc3MgY3Jhc2ggdW5kZXIg
LVtSVENWaWRlb0VuY29kZXJIMjY0IGRlc3Ryb3lDb21wcmVzc2lvblNlc3Npb25dCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMWI0YTMyZDM3YmJhYTM5NTM1NTgzZDJjODUxMTJhNmVl
OTU4ZWQ2My4uZmE4N2UxNzQ4ODk3YjliNTQyMDhkZjM0MDM2YTQzOThkM2JjMTVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBBZGFwdCB0byBlbnVtIGNsYXNzIGNoYW5nZS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0QWx3YXlzVXNlc0NvbXBs
ZXhUZXh0Q29kZVBhdGg6XSk6CisKIDIwMjAtMTItMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDc2OC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCA1ZGRjMjc2YWVhZGJlZGVlMjYzY2FmYmVjYzFl
OWE0ZmI1N2EwYWVjLi5kZmVkYzQxMTIzMDc1OTU0OTgzYzkzYjVjYTgzZmRjNDc5NmY2OWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGlj
IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdlYkNvcmU6
OlRleHRSdW4gcnVuKFN0cmluZyh0ZXh0UmVuZGVyZXIudGV4dCgpKSk7CiAgICAgICAgICAgICBy
dW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChz
dHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkK
KyAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9u
dENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgICAgICAgICAgU0VUX1JFQVNPTl9B
TkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0aCwgcmVhc29ucywg
aW5jbHVkZVJlYXNvbnMpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBhYjQxNGEwOWFh
ZmRiODgyODgzNTRlZTMwNzRiZTYzNjM0MDY4MmViLi4wYmQwYzNhMzVjM2NmMTIwNDViNjkxN2Zi
ZGUwYTNlMjY1MmUzYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxMYXlvdXRTaXplPiBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRD
b250aW51YXRpb24oY29uCiAKIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3Vy
aW5nKGNvbnN0IFN0cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBi
b29sIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChUZXh0
UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleCkKKyAgICBpZiAoZm9udC5jb2Rl
UGF0aChUZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChmb250LndvcmRTcGFjaW5nKCkgfHwg
Zm9udC5sZXR0ZXJTcGFjaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBmNmI1ZjBlMzhk
YjgzZTllYzA1MGI1ZTFkYWUzNTEwOTA5OWU1YTc2Li42MGQ5MzNjYWY5MWM2YzBlM2E0MjkxZGVh
NDYxZmRmNTk1ZmU2ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzTmVlZGVkKFJlbmRlclRleHQmIHRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHsKICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwotICAgICAgICByZXR1
cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OworICAgICAgICBy
ZXR1cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxl
eDsKICAgICB9CiAKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGNkNjJlZWVhYjc2NDAzZTdmN2UzNjMyOTI2
ZWI2MmExNTEzNGJkYmYuLmQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9y
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKICAgICByZXR1cm4gc2V0LmdldCgpLmNv
bnRhaW5zKGZhbWlseSk7CiB9CiAKLUZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6
c19jb2RlUGF0aCA9IEF1dG87CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OnNf
Y29kZVBhdGggPSBDb2RlUGF0aDo6QXV0bzsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIC8vIEZvbnRDYXNjYWRlIEltcGxlbWVudGF0aW9uIChDcm9zcy1QbGF0Zm9y
bSBQb3J0aW9uKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKIAogR2x5cGhCdWZmZXIg
Rm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENv
bXBsZXgpCisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAg
ICAgIHJldHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNp
cyk7CiAKICAgICByZXR1cm4gbGF5b3V0Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZm9yVGV4
dEVtcGhhc2lzKTsKQEAgLTMzMSw4ICszMzEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQog
ICAgIAogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxl
cyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzEwMDA1MAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChy
dW4pOwotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmco
KSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxl
bmd0aCgpKSkKLSAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CisgICAgaWYgKGNvZGVQ
YXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1
aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxlbmd0aCgpKSkK
KyAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgYXV0byBn
bHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5h
dGlvbik7CiAgICAgZ2x5cGhCdWZmZXIuZmxhdHRlbigpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIGZs
b2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsKIAogICAgIGF1
dG8gY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2Ug
PT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4
KSB7CiAgICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb21wbGV4SXRlcmF0b3IoKnRoaXMs
IHJ1biwgZmFsc2UsIGZhbGxiYWNrRm9udHMpOwogICAgICAgICBjb21wbGV4SXRlcmF0b3IuYWR2
YW5jZShmcm9tLCBudWxscHRyLCBJbmNsdWRlUGFydGlhbEdseXBocywgZmFsbGJhY2tGb250cyk7
CiAgICAgICAgIG9mZnNldEJlZm9yZVJhbmdlID0gY29tcGxleEl0ZXJhdG9yLnJ1bldpZHRoU29G
YXIoKTsKQEAgLTM5OCwxMiArMzk4LDEyIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25z
dCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1
bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0
aFRvVXNlICE9IENvZGVQYXRoOjpDb21wbGV4KSB7CiAgICAgICAgIC8vIFRoZSBjb21wbGV4IHBh
dGggaXMgbW9yZSByZXN0cmljdGl2ZSBhYm91dCByZXR1cm5pbmcgZmFsbGJhY2sgZm9udHMgdGhh
biB0aGUgc2ltcGxlIHBhdGgsIHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgdGVzdCB0byBtYWtlIHRo
ZWlyIGJlaGF2aW9ycyBtYXRjaC4KICAgICAgICAgaWYgKCFjYW5SZXR1cm5GYWxsYmFja0ZvbnRz
Rm9yQ29tcGxleFRleHQoKSkKICAgICAgICAgICAgIGZhbGxiYWNrRm9udHMgPSBudWxscHRyOwog
ICAgICAgICAvLyBUaGUgc2ltcGxlIHBhdGggY2FuIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIGds
eXBoIG92ZXJmbG93IGlzIG5vdCBvYnNlcnZhYmxlLgotICAgICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5cGhP
dmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCisgICAgICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENv
ZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5
cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93ID0g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6
d2lkdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tG
b250cwogICAgICAgICBmYWxsYmFja0ZvbnRzID0gJmxvY2FsRmFsbGJhY2tGb250czsKIAogICAg
IGZsb2F0IHJlc3VsdDsKLSAgICBpZiAoY29kZVBhdGhUb1VzZSA9PSBDb21wbGV4KQorICAgIGlm
IChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXN1bHQgPSBm
bG9hdFdpZHRoRm9yQ29tcGxleFRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93
KTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KHJ1
biwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CkBAIC00MzEsNyArNDMxLDcgQEAgZmxv
YXQgRm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGkKIHsKICAgICBpZiAodGV4dC5pc051bGwoKSB8fCB0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKGNvZGVQYXRoKFRleHRSdW4o
dGV4dCkpICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KTsKKyAgICBBU1NFUlQoY29kZVBhdGgoVGV4
dFJ1bih0ZXh0KSkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpOwogICAgIGZsb2F0KiBjYWNoZUVudHJ5
ID0gbV9mb250cy0+d2lkdGhDYWNoZSgpLmFkZCh0ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6cXVpZXRfTmFOKCkpOwogICAgIGlmIChjYWNoZUVudHJ5ICYmICFzdGQ6OmlzbmFuKCpj
YWNoZUVudHJ5KSkKICAgICAgICAgcmV0dXJuICpjYWNoZUVudHJ5OwpAQCAtNTQ2LDcgKzU0Niw3
IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxv
YXQmIHdpZHRoKSBjb25zdAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZv
clRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
ZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7Ci0gICAgaWYgKGNvZGVQYXRo
KHJ1biwgZnJvbSwgdG8pICE9IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwg
dG8pICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9u
UmVjdEZvclNpbXBsZVRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7
CiAKICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KHJ1biwgc2Vs
ZWN0aW9uUmVjdCwgZnJvbSwgZGVzdGluYXRpb24pOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQg
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1
biwgTGF5b3V0UmVjdCYgc2VsCiAKIGludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24o
Y29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBj
b25zdAogewotICAgIGlmIChjb2RlUGF0aChydW4sIHgpICE9IENvbXBsZXgpCisgICAgaWYgKGNv
ZGVQYXRoKHJ1biwgeCkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBvZmZz
ZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEdseXBocyk7
CiAKICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChydW4sIHgsIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTYxNCwxMyArNjE0LDEzIEBAIEZvbnRDYXNjYWRlOjpD
b2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogCiBGb250Q2FzY2FkZTo6Q29kZVBhdGgg
Rm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICBpZiAoc19jb2Rl
UGF0aCAhPSBBdXRvKQorICAgIGlmIChzX2NvZGVQYXRoICE9IENvZGVQYXRoOjpBdXRvKQogICAg
ICAgICByZXR1cm4gc19jb2RlUGF0aDsKIAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklY
TUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3
aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUw
CiAgICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9t
LnZhbHVlT3IoMCkgfHwgdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkp
Ci0gICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKICAgICBVTlVTRURfUEFSQU0odG8p
OwpAQCAtNjMwLDE5ICs2MzAsMTkgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRl
Ojpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUKICAgICAvLyBC
ZWNhdXNlIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcygpIGRvZXNuJ3Qga25vdyB3aGljaCBmZWF0dXJl
cyB0byBlbmFibGUvZGlzYWJsZSBpbiB0aGUgc2ltcGxlIGNvZGUgcGF0aCwgaXQgY2FuJ3QgcHJv
cGVybHkgaGFuZGxlIGZlYXR1cmUgb3IgdmFyaWFudCBzZXR0aW5ncy4KICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MTogQGZvbnQtZmFj
ZSBmZWF0dXJlcyBzaG91bGQgYWxzbyBjYXVzZSB0aGlzIHRvIGJlIGNvbXBsZXguCiAgICAgaWYg
KG1fZm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSA+IDAgfHwgIW1fZm9u
dERlc2NyaXB0aW9uLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCi0gICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICNlbHNl
CiAKICAgICBpZiAocnVuLmxlbmd0aCgpID4gMSAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVp
cmVzU2hhcGluZygpKSkKLSAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6Q29tcGxleDsKICNlbmRpZgogCiAgICAgaWYgKCFydW4uY2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoKCkpCi0gICAgICAgIHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBDb2Rl
UGF0aDo6U2ltcGxlOwogCiAgICAgaWYgKHJ1bi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFNp
bXBsZTsKKyAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7CiAKICAgICAvLyBTdGFydCBm
cm9tIDAgc2luY2UgZHJhd2luZyBhbmQgaGlnaGxpZ2h0aW5nIGFsc28gbWVhc3VyZSB0aGUgY2hh
cmFjdGVycyBiZWZvcmUgcnVuLT5mcm9tLgogICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZUNvZGVQ
YXRoKHJ1bi5jaGFyYWN0ZXJzMTYoKSwgcnVuLmxlbmd0aCgpKTsKQEAgLTY1NSwyOCArNjU1LDI4
IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2Rl
UGF0aChjb25zdCBVQ2hhciogY2hhcmFjdGVyCiAgICAgLy8gYXJlIG5vdCAnY29tYmluaW5nJywg
YnV0IHN0aWxsIG5lZWQgdG8gZ28gdG8gdGhlIGNvbXBsZXggcGF0aC4KICAgICAvLyBBbHRlcm5h
dGl2ZWx5LCB3ZSBtYXkgYXMgd2VsbCBjb25zaWRlciBiaW5hcnkgc2VhcmNoIG92ZXIgYSBzb3J0
ZWQKICAgICAvLyBsaXN0IG9mIHJhbmdlcy4KLSAgICBDb2RlUGF0aCByZXN1bHQgPSBTaW1wbGU7
CisgICAgQ29kZVBhdGggcmVzdWx0ID0gQ29kZVBhdGg6OlNpbXBsZTsKICAgICBib29sIHByZXZp
b3VzQ2hhcmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIGMgPSBjaGFy
YWN0ZXJzW2ldOwogICAgICAgICBpZiAoYyA9PSB6ZXJvV2lkdGhKb2luZXIgJiYgcHJldmlvdXND
aGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgCiAgICAg
ICAgIHByZXZpb3VzQ2hhcmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAg
ICAgIGlmIChjIDwgMHgyRTUpIC8vIFUrMDJFNSB0aHJvdWdoIFUrMDJFOSAoTW9kaWZpZXIgTGV0
dGVycyA6IFRvbmUgbGV0dGVycykgIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChjIDw9IDB4MkU5KSAKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
cmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDApIC8vIFUr
MDMwMCB0aHJvdWdoIFUrMDM2RiBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDM2RikKLSAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAg
ICAgIGlmIChjIDwgMHgwNTkxIHx8IGMgPT0gMHgwNUJFKSAvLyBVKzA1OTEgdGhyb3VnaCBVKzA1
Q0YgZXhjbHVkaW5nIFUrMDVCRSBIZWJyZXcgY29tYmluaW5nIG1hcmtzLCBIZWJyZXcgcHVuY3R1
YXRpb24gUGFzZXEsIFNvZiBQYXN1cSBhbmQgTnVuIEhhZnVraGEKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoYyA8PSAweDA1Q0YpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAvLyBV
KzA2MDAgdGhyb3VnaCBVKzEwOUYgQXJhYmljLCBTeXJpYWMsIFRoYWFuYSwgTktvLCBTYW1hcml0
YW4sIE1hbmRhaWMsCiAgICAgICAgIC8vIERldmFuYWdhcmksIEJlbmdhbGksIEd1cm11a2hpLCBH
dWphcmF0aSwgT3JpeWEsIFRhbWlsLCBUZWx1Z3UsIEthbm5hZGEsIApAQCAtNjg0LDk3ICs2ODQs
OTcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNv
ZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgaWYgKGMgPCAweDA2MDApIAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTA5RikKLSAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4
OwogCiAgICAgICAgIC8vIFUrMTEwMCB0aHJvdWdoIFUrMTFGRiBIYW5ndWwgSmFtbyAob25seSBB
bmNpZW50IEtvcmVhbiBzaG91bGQgYmUgbGVmdCBoZXJlIGlmIHlvdSBwcmVjb21wb3NlOwogICAg
ICAgICAvLyBNb2Rlcm4gS29yZWFuIHdpbGwgYmUgcHJlY29tcG9zZWQgYXMgYSByZXN1bHQgb2Yg
c3RlcCBBKQogICAgICAgICBpZiAoYyA8IDB4MTEwMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoYyA8PSAweDExRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4
MTM1RCkgLy8gVSsxMzVEIHRocm91Z2ggVSsxMzVGIEV0aGlvcGljIGNvbWJpbmluZyBtYXJrcwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTM1RikKLSAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4
OwogCiAgICAgICAgIGlmIChjIDwgMHgxNzAwKSAvLyBVKzE3ODAgdGhyb3VnaCBVKzE4QUYgVGFn
YWxvZywgSGFudW5vbywgQnVoaWQsIFRhZ2hhbndhLEtobWVyLCBNb25nb2xpYW4KICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE4QUYpCi0gICAgICAgICAgICByZXR1
cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAg
ICAgICBpZiAoYyA8IDB4MTkwMCkgLy8gVSsxOTAwIHRocm91Z2ggVSsxOTRGIExpbWJ1IChVbmlj
b2RlIDQuMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE5NEYp
Ci0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0
aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MTk4MCkgLy8gVSsxOTgwIHRocm91Z2gg
VSsxOURGIE5ldyBUYWkgTHVlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMg
PD0gMHgxOURGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1
cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDFBMDApIC8vIFUrMUEw
MCB0aHJvdWdoIFUrMUNGRiBCdWdpbmVzZSwgVGFpIFRoYW0sIEJhbGluZXNlLCBCYXRhaywgTGVw
Y2hhLCBWZWRpYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MUNG
RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxREMwKSAvLyBVKzFEQzAgdGhyb3Vn
aCBVKzFERkYgQ29taW5pbmcgZGlhY3JpdGljYWwgbWFyayBzdXBwbGVtZW50CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxREZGKQotICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAg
ICAgLy8gVSsxRTAwIHRocm91Z2ggVSsyMDAwIGNoYXJhY3RlcnMgd2l0aCBkaWFjcml0aWNzIGFu
ZCBzdGFja2VkIGRpYWNyaXRpY3MKICAgICAgICAgaWYgKGMgPD0gMHgyMDAwKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IENvZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGMgPCAweDIwRDApIC8vIFUrMjBEMCB0aHJv
dWdoIFUrMjBGRiBDb21iaW5pbmcgbWFya3MgZm9yIHN5bWJvbHMKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoYyA8PSAweDIwRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAo
YyA8IDB4MjZGOSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8IDB4MjZG
QSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgyQ0VGKSAvLyBVKzJDRUYgdGhyb3Vn
aCBVKzJDRjEgQ29tYmluaW5nIG1hcmtzIGZvciBDb3B0aWMKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoYyA8PSAweDJDRjEpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8
IDB4MzAyQSkgLy8gVSszMDJBIHRocm91Z2ggVSszMDJGIElkZW9ncmFwaGljIGFuZCBIYW5ndWwg
VG9uZSBtYXJrcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MzAy
RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDk5KQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChjIDwgMHgzMDlEKQotICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7IC8vIEtBVEFLQU5BLUhJUkFHQU5BIChTRU1JLSlWT0lDRUQgU09VTkQgTUFSS1MgcmVxdWly
ZSBjaGFyYWN0ZXIgY29tcG9zaXRpb24KKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsgLy8gS0FUQUtBTkEtSElSQUdBTkEgKFNFTUktKVZPSUNFRCBTT1VORCBNQVJLUyByZXF1
aXJlIGNoYXJhY3RlciBjb21wb3NpdGlvbgogCiAgICAgICAgIGlmIChjIDwgMHhBNjdDKSAvLyBV
K0E2N0MgdGhyb3VnaCBVK0E2N0QgQ29tYmluaW5nIG1hcmtzIGZvciBvbGQgQ3lyaWxsaWMKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEE2N0QpCi0gICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsK
IAogICAgICAgICBpZiAoYyA8IDB4QTZGMCkgLy8gVStBNkYwIHRocm91Z2ggVStBNkYxIENvbWJp
bmluZyBtYXJrIGZvciBCYW11bQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChj
IDw9IDB4QTZGMSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0
dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIC8vIFUrQTgwMCB0aHJvdWdoIFUrQUJG
RiBOYWdyaSwgUGhhZ3MtcGEsIFNhdXJhc2h0cmEsIERldmFuYWdhcmkgRXh0ZW5kZWQsCiAgICAg
ICAgIC8vIEhhbmd1bCBKYW1vIEV4dC4gQSwgSmF2YW5lc2UsIE15YW5tYXIgRXh0ZW5kZWQgQSwg
VGFpIFZpZXQsIE1lZXRlaSBNYXllaywKICAgICAgICAgaWYgKGMgPCAweEE4MDApIAogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4QUJGRikKLSAgICAgICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAg
ICAgICAgIGlmIChjIDwgMHhEN0IwKSAvLyBVK0Q3QjAgdGhyb3VnaCBVK0Q3RkYgSGFuZ3VsIEph
bW8gRXh0LiBCCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhEN0ZG
KQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPD0gMHhEQkZGKSB7CiAgICAgICAgICAgICAv
LyBIaWdoIHN1cnJvZ2F0ZQpAQCAtNzkxLDY2ICs3OTEsNjYgQEAgRm9udENhc2NhZGU6OkNvZGVQ
YXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXIKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMEEwMCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5
Q2hhcmFjdGVyIDwgMHgxMEE2MCkgLy8gS2hhcm9zaHRoaQotICAgICAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAg
ICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTAwMCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHgxMTA4MCkgLy8gQnJhaG1pCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMEQwKSAvLyBLYWl0aGkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNv
bXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTExMDAp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFy
eUNoYXJhY3RlciA8IDB4MTExNTApIC8vIENoYWttYQotICAgICAgICAgICAgICAgIHJldHVybiBD
b21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTE4MCkgLy8gTWFoYWphbmkK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MTExRTApIC8vIFNoYXJhZGEKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBp
ZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyMDApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyNTAp
IC8vIEtob2praQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50
YXJ5Q2hhcmFjdGVyIDwgMHgxMTJCMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTMwMCkgLy8gS2h1ZGF3YWRp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJu
IENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0
ZXIgPCAweDExMzgwKSAvLyBHcmFudGhhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7
CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAg
aWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDAwKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDgw
KSAvLyBOZXdhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPCAweDExNEUwKSAvLyBUaXJodXRhCi0gICAgICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAg
ICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNTgwKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIg
PCAweDExNjAwKSAvLyBTaWRkaGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjYwKSAvLyBNb2RpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjgwKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlD
aGFyYWN0ZXIgPCAweDExNkQwKSAvLyBUYWtyaQotICAgICAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAg
ICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTcwMCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgx
MUMwMCkgLy8gQWhvbSwgRG9ncmEsIERpdmVzIEFrdXJ1LCBOYW5kaW5hZ2FyaSwgWmFuYWJhemFy
IFNxdWFyZSwgU295b21ibywgV2FyYW5nIENpdGksIFBhdSBDaW4gSGF1Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExQzcwKSAv
LyBCaGFpa3N1a2kKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVu
dGFyeUNoYXJhY3RlciA8IDB4MTFDQzApIC8vIE1hcmNoZW4KLSAgICAgICAgICAgICAgICByZXR1
cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAg
ICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MUU5MDApCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MUU5NjApIC8vIEFkbGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDFGMUU2KSAvLyBVKzFGMUU2IHRocm91Z2ggVSsx
RjFGRiBSZWdpb25hbCBJbmRpY2F0b3IgU3ltYm9scwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPD0gMHgxRjFGRikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgICAgIGlmIChpc0Vtb2ppRml0enBhdHJpY2tNb2Rp
ZmllcihzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29t
cGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAg
ICAgICBpZiAoaXNFbW9qaUdyb3VwQ2FuZGlkYXRlKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIpKSB7
CiAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODU5LDExICs4NTksMTEgQEAg
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hh
cmFjdGVyIDwgMHhFMDAwMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDA4MCkgLy8gVGFncwotICAgICAgICAg
ICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6
Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDEw
MCkgLy8gVStFMDEwMCB0aHJvdWdoIFUrRTAxRUYgVW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3Jz
LgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPD0gMHhFMDFFRikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgICAg
IC8vIEZJWE1FOiBDaGVjayBmb3IgQnJhaG1pIChVKzExMDAwIGJsb2NrKSwgS2FpdGhpIChVKzEx
MDgwIGJsb2NrKSBhbmQgb3RoZXIgY29tcGxleCBzY3JpcHRzCiAgICAgICAgICAgICAvLyBpbiBw
bGFuZSAxIG9yIGhpZ2hlci4KQEAgLTg3NCwxMiArODc0LDEyIEBAIEZvbnRDYXNjYWRlOjpDb2Rl
UGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciogY2hh
cmFjdGVyCiAgICAgICAgIGlmIChjIDwgMHhGRTAwKSAvLyBVK0ZFMDAgdGhyb3VnaCBVK0ZFMEYg
VW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3JzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGMgPD0gMHhGRTBGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweEZFMjAp
IC8vIFUrRkUyMCB0aHJvdWdoIFUrRkUyRiBDb21iaW5pbmcgaGFsZiBtYXJrcwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4RkUyRikKLSAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggMjVjMjU4YjU0MjcxZTAxYmVlMjg4ZmQ4M2M3ZjAxNTc5
N2JiMzk5YS4uMTI3NzY0OGE3Y2U3M2JhYTcwMTZmMTVjN2ZmYTk3OWRjNTdkMjU2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0zNCwx
MiArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotLy8gIlgxMS9YLmgiIGRlZmluZXMgQ29tcGxleCB0byAw
IGFuZCBjb25mbGljdHMKLS8vIHdpdGggQ29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLgot
I2lmZGVmIENvbXBsZXgKLSN1bmRlZiBDb21wbGV4Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xODksOSArMTgzLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgaXNTdWJwaXhlbEFudGlhbGlhc2luZ0F2YWlsYWJsZSgpOwog
Ci0gICAgZW51bSBDb2RlUGF0aCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEds
eXBoT3ZlcmZsb3cgfTsKKyAgICBlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhfdCB7IEF1dG8s
IFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKICAgICBDb2RlUGF0
aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBXVEY6
Om51bGxvcHQsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0g
ICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCkgeyByZXR1cm4gU2ltcGxlOyB9CisgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3Rl
clJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gQ29kZVBhdGg6
OlNpbXBsZTsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuKTsKIAogICAgIGJvb2wgcHJpbWFyeUZvbnRJc1N5c3Rl
bUZvbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJD
b3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCA5NzIyYmVmNmRhMDBhYzQ3MmVlNjJmYjUyN2MxODQ5
YmU4MjUwMDgxLi5mZTY3OWE0ZWFlMWM5Njk5NzQ3MzlmNTAwYTA4NzA2YmQxZmJhMzFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBib29sIFdlYkNvcmVTaG91bGRVc2VGb250U21vb3Ro
aW5nKCkKIAogdm9pZCBXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9v
bCBjb21wbGV4KQogewotICAgIEZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChjb21wbGV4ID8gRm9u
dENhc2NhZGU6OkNvbXBsZXggOiBGb250Q2FzY2FkZTo6QXV0byk7CisgICAgRm9udENhc2NhZGU6
OnNldENvZGVQYXRoKGNvbXBsZXggPyBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXggOiBG
b250Q2FzY2FkZTo6Q29kZVBhdGg6OkF1dG8pOwogfQogCiBib29sIFdlYkNvcmVBbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aCgpCiB7Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjb2RlUGF0
aCgpID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OworICAgIHJldHVybiBGb250Q2FzY2FkZTo6Y29k
ZVBhdGgoKSA9PSBDb2RlUGF0aDo6Q29tcGxleDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDUwNmIwZTE0ZWI0
MThiYmU1MzU1ODhhMjk0NzEyNDE0ZTI1ZTdiZmMuLmRiNmRkZjNkODIzZjk0Njc3MzgxYzczMzM4
MjRmM2YwOTFlNWNhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTE0MzIsNyArMTQzMiw3IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBs
aWZpZWRUZXh0TWVhc3VyaW5nKCkgY29uc3QKICAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRo
ZSBmb250IGNvZGVwYXRoLgogICAgIFRleHRSdW4gcnVuKG1fdGV4dCk7CiAgICAgcnVuLnNldENo
YXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7Ci0gICAgaWYgKGZvbnQuY29kZVBhdGgocnVu
KSAhPSBGb250Q2FzY2FkZTo6U2ltcGxlKQorICAgIGlmIChmb250LmNvZGVQYXRoKHJ1bikgIT0g
Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGF1dG8gd2hpdGVzcGFjZUlzQ29sbGFwc2VkID0gc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3Bh
Y2UoKTsKQEAgLTE3NjMsNyArMTc2Myw3IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVz
ZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNBbGxBU0NJSSB8fCB0
ZXh0KCkuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBGb250Q2Fz
Y2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOworICAgIHJldHVybiBGb250Q2FzY2FkZTo6Y2hh
cmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBG
b250Q2FzY2FkZTo6Q29kZVBhdGg6OlNpbXBsZTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojptb21l
bnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RU
eXBlZENoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCBhOTRjYTI5OTFjMWE0YWJhOWE1MmVlZWQ2
YWJlZWFlNjdiN2FkNmU1Li5lMmU2NjUwYTcwMzk5YWVhZTY2ZTYwNjE2YzE3MzJmOTJmZWIyMmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1
aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5s
aW4KIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2FsZWRGb250ID0gdGV4dC5zY2FsZWRGb250
KCk7CiAgICAgbV9ydW4gPSBTVkdUZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0KTsK
LSAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250LmNvZGVQYXRoKG1fcnVuKSA9PSBGb250
Q2FzY2FkZTo6Q29tcGxleDsKKyAgICBtX2lzQ29tcGxleFRleHQgPSBzY2FsZWRGb250LmNvZGVQ
YXRoKG1fcnVuKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICBpZiAo
bV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDllZDVjNmYyMGNk
MWJiZTFlOTA2ZTdkOTQwN2ZjNGY5ZTg5NDg2ZmIuLjRiYjE4YTY2Yzc1YTQ4YzM2ZTg2NzYxZDMw
ZGMzM2VlYjcwOWNhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTY1NSw3ICs2NTUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldERlZmF1bHRSZXF1ZXN0VGlt
ZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAKIHZvaWQgV2ViUHJvY2Vzczo6
c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4
dCkKIHsKLSAgICBXZWJDb3JlOjpGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoYWx3YXlzVXNlQ29t
cGxleFRleHQgPyBXZWJDb3JlOjpGb250Q2FzY2FkZTo6Q29tcGxleCA6IFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpBdXRvKTsKKyAgICBXZWJDb3JlOjpGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoYWx3
YXlzVXNlQ29tcGxleFRleHQgPyBXZWJDb3JlOjpGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBs
ZXggOiBXZWJDb3JlOjpGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkF1dG8pOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCB1c2VGb250U21vb3RoaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc4ZWUw
Y2M1OThkMmI5YmRjZjJlZjM0YzZhNWQ3N2Y5NWI2NmY5YzcuLjIzOWIxMGQ1YTc1MDFmZmY5NDI2
NmRiNGYyMDJlMjJlNTJkZTI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTIyMjEsNyArMjIyMSw3IEBAIHN0YXRpYyBOU011dGFibGVTZXQgKmtu
b3duUGx1Z2luTUlNRVR5cGVzKCkKIAogKyAodm9pZClfc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0
Q29kZVBhdGg6KEJPT0wpZgogewotICAgIFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0
aChmID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvbXBsZXggOiBXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6QXV0byk7CisgICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRoKGYgPyBXZWJD
b3JlOjpGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXggOiBXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6Q29kZVBhdGg6OkF1dG8pOwogfQogCiArIChCT09MKWNhbkNsb3NlQWxsV2ViVmlld3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416400</attachid>
            <date>2020-12-17 00:25:45 -0800</date>
            <delta_ts>2020-12-17 09:35:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201217092543.patch</filename>
            <type>text/plain</type>
            <size>29308</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk3MmIxNjA4MDQ3NDdm
ODk5MTAxMjk1YWZmNDhjMmUyOGYxMDQ3MS4uZmEzNjhmNWI3MmY0Y2IyNzY5Y2EwMWNkMzNjNGI3
NmRlOTM4NWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBhbiBlbnVtIGNsYXNzLiBC
ZXNpZGVzIHRoZQorICAgICAgICB1c3VhbCBlbnVtIGNsYXNzIGJlbmVmaXRzLCBvbmUgYWRkaXRp
b25hbCBuaWNlIHRoaW5nCisgICAgICAgIGlzIHRoYXQgaXQgcmVtb3ZlZCB0aGUgbmVlZCBmb3Ig
dGhlICJDb21wbGV4IiBpZmRlZi4KKworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpjYW5Vc2VGb3JGb250QW5kVGV4dCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5V
c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6
OmlzTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmNvZGVQYXRoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVT
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlQWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVDYW5V
c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0
UmVuZGVyZXIpOgorCiAyMDIwLTEyLTE2ICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2
amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0RlYnVnXVtHU3RyZWFtZXJdIENyYXNoIGlu
IGZhc3QvbWVkaWFzdHJlYW0vY2hhbmdlLXRyYWNrcy1tZWRpYS1zdHJlYW0tYmVpbmctcGxheWVk
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOTc2OTkzOWRkNDNhNWUwYjcyOTliYjc2NWEwNjJlM2ZmNzljMjY1
NC4uYjI2Zjc2NTI1OGYyZjAxMGM0ZjgzODI3YzM5NjdjMDUxM2E4YWNiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0xMi0xNiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgor
CisgICAgICAgIE1ha2UgRm9udENhc2NhZGU6OkNvZGVQYXRoIGFuIGVudW0gY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTk0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQWRhcHQgdG8gZW51
bSBjbGFzcyBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2Rl
UGF0aCk6CisKIDIwMjAtMTItMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gW2lPU10gRmxha3kgR1BVIFByb2Nlc3MgY3Jhc2ggdW5kZXIg
LVtSVENWaWRlb0VuY29kZXJIMjY0IGRlc3Ryb3lDb21wcmVzc2lvblNlc3Npb25dCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMWI0YTMyZDM3YmJhYTM5NTM1NTgzZDJjODUxMTJhNmVl
OTU4ZWQ2My4uZmE4N2UxNzQ4ODk3YjliNTQyMDhkZjM0MDM2YTQzOThkM2JjMTVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEyLTE2ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBBZGFwdCB0byBlbnVtIGNsYXNzIGNoYW5nZS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0QWx3YXlzVXNlc0NvbXBs
ZXhUZXh0Q29kZVBhdGg6XSk6CisKIDIwMjAtMTItMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDc2OC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCA1ZGRjMjc2YWVhZGJlZGVlMjYzY2FmYmVjYzFl
OWE0ZmI1N2EwYWVjLi5kZmVkYzQxMTIzMDc1OTU0OTgzYzkzYjVjYTgzZmRjNDc5NmY2OWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGlj
IE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdlYkNvcmU6
OlRleHRSdW4gcnVuKFN0cmluZyh0ZXh0UmVuZGVyZXIudGV4dCgpKSk7CiAgICAgICAgICAgICBy
dW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKLSAgICAgICAgICAgIGlmIChz
dHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkK
KyAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKHJ1bikgIT0gRm9u
dENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAgICAgICAgICAgU0VUX1JFQVNPTl9B
TkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzQ29tcGxleEZvbnRDb2RlUGF0aCwgcmVhc29ucywg
aW5jbHVkZVJlYXNvbnMpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBhYjQxNGEwOWFh
ZmRiODgyODgzNTRlZTMwNzRiZTYzNjM0MDY4MmViLi4wYmQwYzNhMzVjM2NmMTIwNDViNjkxN2Zi
ZGUwYTNlMjY1MmUzYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxMYXlvdXRTaXplPiBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRD
b250aW51YXRpb24oY29uCiAKIHN0YXRpYyBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3Vy
aW5nKGNvbnN0IFN0cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBi
b29sIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAoZm9udC5jb2RlUGF0aChUZXh0
UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleCkKKyAgICBpZiAoZm9udC5jb2Rl
UGF0aChUZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChmb250LndvcmRTcGFjaW5nKCkgfHwg
Zm9udC5sZXR0ZXJTcGFjaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBmNmI1ZjBlMzhk
YjgzZTllYzA1MGI1ZTFkYWUzNTEwOTA5OWU1YTc2Li42MGQ5MzNjYWY5MWM2YzBlM2E0MjkxZGVh
NDYxZmRmNTk1ZmU2ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzTmVlZGVkKFJlbmRlclRleHQmIHRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHsKICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwotICAgICAgICByZXR1
cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OworICAgICAgICBy
ZXR1cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxl
eDsKICAgICB9CiAKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGNkNjJlZWVhYjc2NDAzZTdmN2UzNjMyOTI2
ZWI2MmExNTEzNGJkYmYuLmQzMjI0YTMwYTkzY2ZhNGNlYjJhZDdlOGFmMjczMGU4NWI3ZDVkMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9y
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKICAgICByZXR1cm4gc2V0LmdldCgpLmNv
bnRhaW5zKGZhbWlseSk7CiB9CiAKLUZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6
c19jb2RlUGF0aCA9IEF1dG87CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OnNf
Y29kZVBhdGggPSBDb2RlUGF0aDo6QXV0bzsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIC8vIEZvbnRDYXNjYWRlIEltcGxlbWVudGF0aW9uIChDcm9zcy1QbGF0Zm9y
bSBQb3J0aW9uKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKIAogR2x5cGhCdWZmZXIg
Rm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENv
bXBsZXgpCisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAg
ICAgIHJldHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNp
cyk7CiAKICAgICByZXR1cm4gbGF5b3V0Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZm9yVGV4
dEVtcGhhc2lzKTsKQEAgLTMzMSw4ICszMzEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQog
ICAgIAogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxl
cyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzEwMDA1MAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChy
dW4pOwotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmco
KSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxl
bmd0aCgpKSkKLSAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CisgICAgaWYgKGNvZGVQ
YXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNvbXBsZXggJiYgKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1
aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20gfHwgZGVzdGluYXRpb24gIT0gcnVuLmxlbmd0aCgpKSkK
KyAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgYXV0byBn
bHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5h
dGlvbik7CiAgICAgZ2x5cGhCdWZmZXIuZmxhdHRlbigpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIGZs
b2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0IFRleHRSdW4mIHJ1biwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsKIAogICAgIGF1
dG8gY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2Ug
PT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4
KSB7CiAgICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb21wbGV4SXRlcmF0b3IoKnRoaXMs
IHJ1biwgZmFsc2UsIGZhbGxiYWNrRm9udHMpOwogICAgICAgICBjb21wbGV4SXRlcmF0b3IuYWR2
YW5jZShmcm9tLCBudWxscHRyLCBJbmNsdWRlUGFydGlhbEdseXBocywgZmFsbGJhY2tGb250cyk7
CiAgICAgICAgIG9mZnNldEJlZm9yZVJhbmdlID0gY29tcGxleEl0ZXJhdG9yLnJ1bldpZHRoU29G
YXIoKTsKQEAgLTM5OCwxMiArMzk4LDEyIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25z
dCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1
bik7Ci0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkgeworICAgIGlmIChjb2RlUGF0
aFRvVXNlICE9IENvZGVQYXRoOjpDb21wbGV4KSB7CiAgICAgICAgIC8vIFRoZSBjb21wbGV4IHBh
dGggaXMgbW9yZSByZXN0cmljdGl2ZSBhYm91dCByZXR1cm5pbmcgZmFsbGJhY2sgZm9udHMgdGhh
biB0aGUgc2ltcGxlIHBhdGgsIHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgdGVzdCB0byBtYWtlIHRo
ZWlyIGJlaGF2aW9ycyBtYXRjaC4KICAgICAgICAgaWYgKCFjYW5SZXR1cm5GYWxsYmFja0ZvbnRz
Rm9yQ29tcGxleFRleHQoKSkKICAgICAgICAgICAgIGZhbGxiYWNrRm9udHMgPSBudWxscHRyOwog
ICAgICAgICAvLyBUaGUgc2ltcGxlIHBhdGggY2FuIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIGds
eXBoIG92ZXJmbG93IGlzIG5vdCBvYnNlcnZhYmxlLgotICAgICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5cGhP
dmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCisgICAgICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENv
ZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyAmJiAoZ2x5cGhPdmVyZmxvdyAmJiAhZ2x5
cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93ID0g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6
d2lkdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tG
b250cwogICAgICAgICBmYWxsYmFja0ZvbnRzID0gJmxvY2FsRmFsbGJhY2tGb250czsKIAogICAg
IGZsb2F0IHJlc3VsdDsKLSAgICBpZiAoY29kZVBhdGhUb1VzZSA9PSBDb21wbGV4KQorICAgIGlm
IChjb2RlUGF0aFRvVXNlID09IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXN1bHQgPSBm
bG9hdFdpZHRoRm9yQ29tcGxleFRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93
KTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KHJ1
biwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CkBAIC00MzEsNyArNDMxLDcgQEAgZmxv
YXQgRm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGkKIHsKICAgICBpZiAodGV4dC5pc051bGwoKSB8fCB0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKGNvZGVQYXRoKFRleHRSdW4o
dGV4dCkpICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KTsKKyAgICBBU1NFUlQoY29kZVBhdGgoVGV4
dFJ1bih0ZXh0KSkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpOwogICAgIGZsb2F0KiBjYWNoZUVudHJ5
ID0gbV9mb250cy0+d2lkdGhDYWNoZSgpLmFkZCh0ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6cXVpZXRfTmFOKCkpOwogICAgIGlmIChjYWNoZUVudHJ5ICYmICFzdGQ6OmlzbmFuKCpj
YWNoZUVudHJ5KSkKICAgICAgICAgcmV0dXJuICpjYWNoZUVudHJ5OwpAQCAtNTQ2LDcgKzU0Niw3
IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxv
YXQmIHdpZHRoKSBjb25zdAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZv
clRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
ZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7Ci0gICAgaWYgKGNvZGVQYXRo
KHJ1biwgZnJvbSwgdG8pICE9IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwg
dG8pICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9u
UmVjdEZvclNpbXBsZVRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7
CiAKICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KHJ1biwgc2Vs
ZWN0aW9uUmVjdCwgZnJvbSwgZGVzdGluYXRpb24pOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQg
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1
biwgTGF5b3V0UmVjdCYgc2VsCiAKIGludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24o
Y29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBj
b25zdAogewotICAgIGlmIChjb2RlUGF0aChydW4sIHgpICE9IENvbXBsZXgpCisgICAgaWYgKGNv
ZGVQYXRoKHJ1biwgeCkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBvZmZz
ZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEdseXBocyk7
CiAKICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChydW4sIHgsIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTYxNCwxMyArNjE0LDEzIEBAIEZvbnRDYXNjYWRlOjpD
b2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogCiBGb250Q2FzY2FkZTo6Q29kZVBhdGgg
Rm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICBpZiAoc19jb2Rl
UGF0aCAhPSBBdXRvKQorICAgIGlmIChzX2NvZGVQYXRoICE9IENvZGVQYXRoOjpBdXRvKQogICAg
ICAgICByZXR1cm4gc19jb2RlUGF0aDsKIAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklY
TUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3
aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUw
CiAgICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9t
LnZhbHVlT3IoMCkgfHwgdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkp
Ci0gICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKICAgICBVTlVTRURfUEFSQU0odG8p
OwpAQCAtNjMwLDE5ICs2MzAsMTkgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRl
Ojpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUKICAgICAvLyBC
ZWNhdXNlIEZvbnQ6OmFwcGx5VHJhbnNmb3JtcygpIGRvZXNuJ3Qga25vdyB3aGljaCBmZWF0dXJl
cyB0byBlbmFibGUvZGlzYWJsZSBpbiB0aGUgc2ltcGxlIGNvZGUgcGF0aCwgaXQgY2FuJ3QgcHJv
cGVybHkgaGFuZGxlIGZlYXR1cmUgb3IgdmFyaWFudCBzZXR0aW5ncy4KICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5MTogQGZvbnQtZmFj
ZSBmZWF0dXJlcyBzaG91bGQgYWxzbyBjYXVzZSB0aGlzIHRvIGJlIGNvbXBsZXguCiAgICAgaWYg
KG1fZm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSA+IDAgfHwgIW1fZm9u
dERlc2NyaXB0aW9uLnZhcmlhbnRTZXR0aW5ncygpLmlzQWxsTm9ybWFsKCkpCi0gICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICNlbHNl
CiAKICAgICBpZiAocnVuLmxlbmd0aCgpID4gMSAmJiAoZW5hYmxlS2VybmluZygpIHx8IHJlcXVp
cmVzU2hhcGluZygpKSkKLSAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgIHJldHVybiBD
b2RlUGF0aDo6Q29tcGxleDsKICNlbmRpZgogCiAgICAgaWYgKCFydW4uY2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoKCkpCi0gICAgICAgIHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBDb2Rl
UGF0aDo6U2ltcGxlOwogCiAgICAgaWYgKHJ1bi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFNp
bXBsZTsKKyAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7CiAKICAgICAvLyBTdGFydCBm
cm9tIDAgc2luY2UgZHJhd2luZyBhbmQgaGlnaGxpZ2h0aW5nIGFsc28gbWVhc3VyZSB0aGUgY2hh
cmFjdGVycyBiZWZvcmUgcnVuLT5mcm9tLgogICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZUNvZGVQ
YXRoKHJ1bi5jaGFyYWN0ZXJzMTYoKSwgcnVuLmxlbmd0aCgpKTsKQEAgLTY1NSwyOCArNjU1LDI4
IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2Rl
UGF0aChjb25zdCBVQ2hhciogY2hhcmFjdGVyCiAgICAgLy8gYXJlIG5vdCAnY29tYmluaW5nJywg
YnV0IHN0aWxsIG5lZWQgdG8gZ28gdG8gdGhlIGNvbXBsZXggcGF0aC4KICAgICAvLyBBbHRlcm5h
dGl2ZWx5LCB3ZSBtYXkgYXMgd2VsbCBjb25zaWRlciBiaW5hcnkgc2VhcmNoIG92ZXIgYSBzb3J0
ZWQKICAgICAvLyBsaXN0IG9mIHJhbmdlcy4KLSAgICBDb2RlUGF0aCByZXN1bHQgPSBTaW1wbGU7
CisgICAgQ29kZVBhdGggcmVzdWx0ID0gQ29kZVBhdGg6OlNpbXBsZTsKICAgICBib29sIHByZXZp
b3VzQ2hhcmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIGMgPSBjaGFy
YWN0ZXJzW2ldOwogICAgICAgICBpZiAoYyA9PSB6ZXJvV2lkdGhKb2luZXIgJiYgcHJldmlvdXND
aGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgCiAgICAg
ICAgIHByZXZpb3VzQ2hhcmFjdGVySXNFbW9qaUdyb3VwQ2FuZGlkYXRlID0gZmFsc2U7CiAgICAg
ICAgIGlmIChjIDwgMHgyRTUpIC8vIFUrMDJFNSB0aHJvdWdoIFUrMDJFOSAoTW9kaWZpZXIgTGV0
dGVycyA6IFRvbmUgbGV0dGVycykgIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChjIDw9IDB4MkU5KSAKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
cmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDApIC8vIFUr
MDMwMCB0aHJvdWdoIFUrMDM2RiBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDM2RikKLSAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAg
ICAgIGlmIChjIDwgMHgwNTkxIHx8IGMgPT0gMHgwNUJFKSAvLyBVKzA1OTEgdGhyb3VnaCBVKzA1
Q0YgZXhjbHVkaW5nIFUrMDVCRSBIZWJyZXcgY29tYmluaW5nIG1hcmtzLCBIZWJyZXcgcHVuY3R1
YXRpb24gUGFzZXEsIFNvZiBQYXN1cSBhbmQgTnVuIEhhZnVraGEKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoYyA8PSAweDA1Q0YpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICAvLyBV
KzA2MDAgdGhyb3VnaCBVKzEwOUYgQXJhYmljLCBTeXJpYWMsIFRoYWFuYSwgTktvLCBTYW1hcml0
YW4sIE1hbmRhaWMsCiAgICAgICAgIC8vIERldmFuYWdhcmksIEJlbmdhbGksIEd1cm11a2hpLCBH
dWphcmF0aSwgT3JpeWEsIFRhbWlsLCBUZWx1Z3UsIEthbm5hZGEsIApAQCAtNjg0LDk3ICs2ODQs
OTcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNv
ZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgaWYgKGMgPCAweDA2MDApIAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTA5RikKLSAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4
OwogCiAgICAgICAgIC8vIFUrMTEwMCB0aHJvdWdoIFUrMTFGRiBIYW5ndWwgSmFtbyAob25seSBB
bmNpZW50IEtvcmVhbiBzaG91bGQgYmUgbGVmdCBoZXJlIGlmIHlvdSBwcmVjb21wb3NlOwogICAg
ICAgICAvLyBNb2Rlcm4gS29yZWFuIHdpbGwgYmUgcHJlY29tcG9zZWQgYXMgYSByZXN1bHQgb2Yg
c3RlcCBBKQogICAgICAgICBpZiAoYyA8IDB4MTEwMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoYyA8PSAweDExRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAg
ICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4
MTM1RCkgLy8gVSsxMzVEIHRocm91Z2ggVSsxMzVGIEV0aGlvcGljIGNvbWJpbmluZyBtYXJrcwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTM1RikKLSAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4
OwogCiAgICAgICAgIGlmIChjIDwgMHgxNzAwKSAvLyBVKzE3ODAgdGhyb3VnaCBVKzE4QUYgVGFn
YWxvZywgSGFudW5vbywgQnVoaWQsIFRhZ2hhbndhLEtobWVyLCBNb25nb2xpYW4KICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE4QUYpCi0gICAgICAgICAgICByZXR1
cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAg
ICAgICBpZiAoYyA8IDB4MTkwMCkgLy8gVSsxOTAwIHRocm91Z2ggVSsxOTRGIExpbWJ1IChVbmlj
b2RlIDQuMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE5NEYp
Ci0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0
aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8IDB4MTk4MCkgLy8gVSsxOTgwIHRocm91Z2gg
VSsxOURGIE5ldyBUYWkgTHVlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMg
PD0gMHgxOURGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1
cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweDFBMDApIC8vIFUrMUEw
MCB0aHJvdWdoIFUrMUNGRiBCdWdpbmVzZSwgVGFpIFRoYW0sIEJhbGluZXNlLCBCYXRhaywgTGVw
Y2hhLCBWZWRpYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MUNG
RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgxREMwKSAvLyBVKzFEQzAgdGhyb3Vn
aCBVKzFERkYgQ29taW5pbmcgZGlhY3JpdGljYWwgbWFyayBzdXBwbGVtZW50CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgxREZGKQotICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAg
ICAgLy8gVSsxRTAwIHRocm91Z2ggVSsyMDAwIGNoYXJhY3RlcnMgd2l0aCBkaWFjcml0aWNzIGFu
ZCBzdGFja2VkIGRpYWNyaXRpY3MKICAgICAgICAgaWYgKGMgPD0gMHgyMDAwKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IENvZGVQYXRoOjpTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdzsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGMgPCAweDIwRDApIC8vIFUrMjBEMCB0aHJv
dWdoIFUrMjBGRiBDb21iaW5pbmcgbWFya3MgZm9yIHN5bWJvbHMKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoYyA8PSAweDIwRkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAo
YyA8IDB4MjZGOSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8IDB4MjZG
QSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgyQ0VGKSAvLyBVKzJDRUYgdGhyb3Vn
aCBVKzJDRjEgQ29tYmluaW5nIG1hcmtzIGZvciBDb3B0aWMKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoYyA8PSAweDJDRjEpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKIAogICAgICAgICBpZiAoYyA8
IDB4MzAyQSkgLy8gVSszMDJBIHRocm91Z2ggVSszMDJGIElkZW9ncmFwaGljIGFuZCBIYW5ndWwg
VG9uZSBtYXJrcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MzAy
RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQ
YXRoOjpDb21wbGV4OwogCiAgICAgICAgIGlmIChjIDwgMHgzMDk5KQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChjIDwgMHgzMDlEKQotICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7IC8vIEtBVEFLQU5BLUhJUkFHQU5BIChTRU1JLSlWT0lDRUQgU09VTkQgTUFSS1MgcmVxdWly
ZSBjaGFyYWN0ZXIgY29tcG9zaXRpb24KKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29t
cGxleDsgLy8gS0FUQUtBTkEtSElSQUdBTkEgKFNFTUktKVZPSUNFRCBTT1VORCBNQVJLUyByZXF1
aXJlIGNoYXJhY3RlciBjb21wb3NpdGlvbgogCiAgICAgICAgIGlmIChjIDwgMHhBNjdDKSAvLyBV
K0E2N0MgdGhyb3VnaCBVK0E2N0QgQ29tYmluaW5nIG1hcmtzIGZvciBvbGQgQ3lyaWxsaWMKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweEE2N0QpCi0gICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsK
IAogICAgICAgICBpZiAoYyA8IDB4QTZGMCkgLy8gVStBNkYwIHRocm91Z2ggVStBNkYxIENvbWJp
bmluZyBtYXJrIGZvciBCYW11bQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChj
IDw9IDB4QTZGMSkKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0
dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAgICAgICAgIC8vIFUrQTgwMCB0aHJvdWdoIFUrQUJG
RiBOYWdyaSwgUGhhZ3MtcGEsIFNhdXJhc2h0cmEsIERldmFuYWdhcmkgRXh0ZW5kZWQsCiAgICAg
ICAgIC8vIEhhbmd1bCBKYW1vIEV4dC4gQSwgSmF2YW5lc2UsIE15YW5tYXIgRXh0ZW5kZWQgQSwg
VGFpIFZpZXQsIE1lZXRlaSBNYXllaywKICAgICAgICAgaWYgKGMgPCAweEE4MDApIAogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4QUJGRikKLSAgICAgICAgICAgIHJl
dHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogCiAg
ICAgICAgIGlmIChjIDwgMHhEN0IwKSAvLyBVK0Q3QjAgdGhyb3VnaCBVK0Q3RkYgSGFuZ3VsIEph
bW8gRXh0LiBCCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhEN0ZG
KQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29kZVBh
dGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPD0gMHhEQkZGKSB7CiAgICAgICAgICAgICAv
LyBIaWdoIHN1cnJvZ2F0ZQpAQCAtNzkxLDY2ICs3OTEsNjYgQEAgRm9udENhc2NhZGU6OkNvZGVQ
YXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXIKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMEEwMCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5
Q2hhcmFjdGVyIDwgMHgxMEE2MCkgLy8gS2hhcm9zaHRoaQotICAgICAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAg
ICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTAwMCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVy
IDwgMHgxMTA4MCkgLy8gQnJhaG1pCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExMEQwKSAvLyBLYWl0aGkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNv
bXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTExMDAp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFy
eUNoYXJhY3RlciA8IDB4MTExNTApIC8vIENoYWttYQotICAgICAgICAgICAgICAgIHJldHVybiBD
b21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTE4MCkgLy8gTWFoYWphbmkK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MTExRTApIC8vIFNoYXJhZGEKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBp
ZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyMDApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MTEyNTAp
IC8vIEtob2praQotICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
ICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50
YXJ5Q2hhcmFjdGVyIDwgMHgxMTJCMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTMwMCkgLy8gS2h1ZGF3YWRp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJu
IENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0
ZXIgPCAweDExMzgwKSAvLyBHcmFudGhhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7
CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAg
aWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDAwKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNDgw
KSAvLyBOZXdhCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPCAweDExNEUwKSAvLyBUaXJodXRhCi0gICAgICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAg
ICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNTgwKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIg
PCAweDExNjAwKSAvLyBTaWRkaGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjYwKSAvLyBNb2RpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExNjgwKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlD
aGFyYWN0ZXIgPCAweDExNkQwKSAvLyBUYWtyaQotICAgICAgICAgICAgICAgIHJldHVybiBDb21w
bGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6Q29tcGxleDsKICAgICAgICAg
ICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgxMTcwMCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHgx
MUMwMCkgLy8gQWhvbSwgRG9ncmEsIERpdmVzIEFrdXJ1LCBOYW5kaW5hZ2FyaSwgWmFuYWJhemFy
IFNxdWFyZSwgU295b21ibywgV2FyYW5nIENpdGksIFBhdSBDaW4gSGF1Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDExQzcwKSAv
LyBCaGFpa3N1a2kKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVu
dGFyeUNoYXJhY3RlciA8IDB4MTFDQzApIC8vIE1hcmNoZW4KLSAgICAgICAgICAgICAgICByZXR1
cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAg
ICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3RlciA8IDB4MUU5MDApCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFyeUNoYXJhY3Rl
ciA8IDB4MUU5NjApIC8vIEFkbGFtCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgICAgICAgICAgaWYg
KHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDFGMUU2KSAvLyBVKzFGMUU2IHRocm91Z2ggVSsx
RjFGRiBSZWdpb25hbCBJbmRpY2F0b3IgU3ltYm9scwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPD0gMHgxRjFGRikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29k
ZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgICAgIGlmIChpc0Vtb2ppRml0enBhdHJpY2tNb2Rp
ZmllcihzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29t
cGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAgICAgICAg
ICAgICBpZiAoaXNFbW9qaUdyb3VwQ2FuZGlkYXRlKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIpKSB7
CiAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyYWN0ZXJJc0Vtb2ppR3JvdXBDYW5kaWRhdGUg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODU5LDExICs4NTksMTEgQEAg
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXIKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hh
cmFjdGVyIDwgMHhFMDAwMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDA4MCkgLy8gVGFncwotICAgICAgICAg
ICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgICAgIHJldHVybiBDb2RlUGF0aDo6
Q29tcGxleDsKICAgICAgICAgICAgIGlmIChzdXBwbGVtZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDEw
MCkgLy8gVStFMDEwMCB0aHJvdWdoIFUrRTAxRUYgVW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3Jz
LgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRh
cnlDaGFyYWN0ZXIgPD0gMHhFMDFFRikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgICAg
IC8vIEZJWE1FOiBDaGVjayBmb3IgQnJhaG1pIChVKzExMDAwIGJsb2NrKSwgS2FpdGhpIChVKzEx
MDgwIGJsb2NrKSBhbmQgb3RoZXIgY29tcGxleCBzY3JpcHRzCiAgICAgICAgICAgICAvLyBpbiBw
bGFuZSAxIG9yIGhpZ2hlci4KQEAgLTg3NCwxMiArODc0LDEyIEBAIEZvbnRDYXNjYWRlOjpDb2Rl
UGF0aCBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciogY2hh
cmFjdGVyCiAgICAgICAgIGlmIChjIDwgMHhGRTAwKSAvLyBVK0ZFMDAgdGhyb3VnaCBVK0ZFMEYg
VW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3JzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGMgPD0gMHhGRTBGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBsZXg7CiAKICAgICAgICAgaWYgKGMgPCAweEZFMjAp
IC8vIFUrRkUyMCB0aHJvdWdoIFUrRkUyRiBDb21iaW5pbmcgaGFsZiBtYXJrcwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4RkUyRikKLSAgICAgICAgICAgIHJldHVy
biBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21wbGV4OwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggMjVjMjU4YjU0MjcxZTAxYmVlMjg4ZmQ4M2M3ZjAxNTc5
N2JiMzk5YS4uMTI3NzY0OGE3Y2U3M2JhYTcwMTZmMTVjN2ZmYTk3OWRjNTdkMjU2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0zNCwx
MiArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotLy8gIlgxMS9YLmgiIGRlZmluZXMgQ29tcGxleCB0byAw
IGFuZCBjb25mbGljdHMKLS8vIHdpdGggQ29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLgot
I2lmZGVmIENvbXBsZXgKLSN1bmRlZiBDb21wbGV4Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xODksOSArMTgzLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgaXNTdWJwaXhlbEFudGlhbGlhc2luZ0F2YWlsYWJsZSgpOwog
Ci0gICAgZW51bSBDb2RlUGF0aCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEds
eXBoT3ZlcmZsb3cgfTsKKyAgICBlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhfdCB7IEF1dG8s
IFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKICAgICBDb2RlUGF0
aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBXVEY6
Om51bGxvcHQsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0g
ICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCkgeyByZXR1cm4gU2ltcGxlOyB9CisgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3Rl
clJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gQ29kZVBhdGg6
OlNpbXBsZTsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuKTsKIAogICAgIGJvb2wgcHJpbWFyeUZvbnRJc1N5c3Rl
bUZvbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJD
b3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCA5NzIyYmVmNmRhMDBhYzQ3MmVlNjJmYjUyN2MxODQ5
YmU4MjUwMDgxLi5lOWMzYzlhZWYwMGJmMDdkMzEwYzZhOTRjNjA3NGMyOWYzYzczM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBib29sIFdlYkNvcmVTaG91bGRVc2VGb250U21vb3Ro
aW5nKCkKIAogdm9pZCBXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9v
bCBjb21wbGV4KQogewotICAgIEZvbnRDYXNjYWRlOjpzZXRDb2RlUGF0aChjb21wbGV4ID8gRm9u
dENhc2NhZGU6OkNvbXBsZXggOiBGb250Q2FzY2FkZTo6QXV0byk7CisgICAgRm9udENhc2NhZGU6
OnNldENvZGVQYXRoKGNvbXBsZXggPyBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXggOiBG
b250Q2FzY2FkZTo6Q29kZVBhdGg6OkF1dG8pOwogfQogCiBib29sIFdlYkNvcmVBbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aCgpCiB7Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjb2RlUGF0
aCgpID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OworICAgIHJldHVybiBGb250Q2FzY2FkZTo6Y29k
ZVBhdGgoKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXg7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRl
eCA1MDZiMGUxNGViNDE4YmJlNTM1NTg4YTI5NDcxMjQxNGUyNWU3YmZjLi5kYjZkZGYzZDgyM2Y5
NDY3NzM4MWM3MzMzODI0ZjNmMDkxZTVjYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBib29sIFJlbmRlclRleHQ6OmNvbXB1
dGVDYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAgICAgLy8gQWRkaXRpb25h
bCBjaGVjayBvbiB0aGUgZm9udCBjb2RlcGF0aC4KICAgICBUZXh0UnVuIHJ1bihtX3RleHQpOwog
ICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoZmFsc2UpOwotICAgIGlmIChmb250
LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OlNpbXBsZSkKKyAgICBpZiAoZm9udC5jb2Rl
UGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6U2ltcGxlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBhdXRvIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCA9IHN0eWxlKCkuY29s
bGFwc2VXaGl0ZVNwYWNlKCk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBib29sIFJlbmRlclRleHQ6
OmNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSBjb25zdAogewogICAgIGlmIChtX2lz
QWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBy
ZXR1cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgodGV4dCgpLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6OlNpbXBsZTsKKyAgICByZXR1cm4gRm9u
dENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgodGV4dCgpLmNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGU7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zm
c2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggYTk0Y2EyOTkxYzFh
NGFiYTlhNTJlZWVkNmFiZWVhZTY3YjdhZDZlNS4uZTJlNjY1MGE3MDM5OWFlYWU2NmU2MDYxNmMx
NzMyZjkyZmViMjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KFJlbmRlclNWR0lubGluCiAKICAgICBjb25zdCBGb250Q2FzY2FkZSYgc2NhbGVkRm9udCA9IHRl
eHQuc2NhbGVkRm9udCgpOwogICAgIG1fcnVuID0gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRl
eHRSdW4odGV4dCk7Ci0gICAgbV9pc0NvbXBsZXhUZXh0ID0gc2NhbGVkRm9udC5jb2RlUGF0aCht
X3J1bikgPT0gRm9udENhc2NhZGU6OkNvbXBsZXg7CisgICAgbV9pc0NvbXBsZXhUZXh0ID0gc2Nh
bGVkRm9udC5jb2RlUGF0aChtX3J1bikgPT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpDb21wbGV4
OwogCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJh
dG9yID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA5ZWQ1YzZmMjBjZDFiYmUxZTkwNmU3ZDk0MDdmYzRmOWU4OTQ4NmZiLi40YmIxOGE2NmM3NWE0
OGMzNmU4Njc2MWQzMGRjMzNlZWI3MDljYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXREZWZh
dWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKQogCiB2b2lk
IFdlYlByb2Nlc3M6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlz
VXNlQ29tcGxleFRleHQpCiB7Ci0gICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRo
KGFsd2F5c1VzZUNvbXBsZXhUZXh0ID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvbXBsZXggOiBX
ZWJDb3JlOjpGb250Q2FzY2FkZTo6QXV0byk7CisgICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNl
dENvZGVQYXRoKGFsd2F5c1VzZUNvbXBsZXhUZXh0ID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNv
ZGVQYXRoOjpDb21wbGV4IDogV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpBdXRvKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wgdXNl
Rm9udFNtb290aGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCA3OGVlMGNjNTk4ZDJiOWJkY2YyZWYzNGM2YTVkNzdmOTViNjZmOWM3Li4yMzliMTBk
NWE3NTAxZmZmOTQyNjZkYjRmMjAyZTIyZTUyZGUyNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCBzdGF0aWMgTlNN
dXRhYmxlU2V0ICprbm93blBsdWdpbk1JTUVUeXBlcygpCiAKICsgKHZvaWQpX3NldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoOihCT09MKWYKIHsKLSAgICBXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6c2V0Q29kZVBhdGgoZiA/IFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpDb21wbGV4IDogV2ViQ29y
ZTo6Rm9udENhc2NhZGU6OkF1dG8pOworICAgIFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpzZXRDb2Rl
UGF0aChmID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpDb21wbGV4IDogV2ViQ29y
ZTo6Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpBdXRvKTsKIH0KIAogKyAoQk9PTCljYW5DbG9zZUFs
bFdlYlZpZXdzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416430</attachid>
            <date>2020-12-17 09:35:53 -0800</date>
            <delta_ts>2021-01-24 13:59:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219947-20201217183551.patch</filename>
            <type>text/plain</type>
            <size>1281</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTliZWVlN2RkYWQyYjgx
NTgzMGQyNDc4ZjEyZWNkMGU1ZDJlM2RkNC4uMmJhMWQ3MTE2ZWE3ODhmNDNjZTI5ZWFjYjM3ODE1
ZTljZDdjODMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEyLTE3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmV2ZXJ0IHBhcnQgb2YgcjI3MDkzMiBjaGFuZ2UsIENvbXBsZXggZnJvbSBY
LmgKKyAgICAgICAgd2lsbCBjbGFzaCB3aXRoIHRoZSBlbnVtIGNsYXNzIHRvby4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisKIDIwMjAtMTItMTcgIFJvYiBC
dWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpDb2Rl
UGF0aCBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaAppbmRleCAxMjc3NjQ4YTdjZTczYmFhNzAxNmYxNWM3ZmZhOTc5ZGM1N2Qy
NTZjLi42MGFmNmYzNWFlNGViNzFhNDAwY2YxMzZhYzgwNjM2ZDdmNjA5YzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTM0LDYgKzM0
LDEyIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCisvLyAiWDExL1guaCIgZGVmaW5lcyBDb21wbGV4IHRvIDAgYW5k
IGNvbmZsaWN0cworLy8gd2l0aCBDb21wbGV4IHZhbHVlIGluIENvZGVQYXRoIGVudW0uCisjaWZk
ZWYgQ29tcGxleAorI3VuZGVmIENvbXBsZXgKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>