<?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>230913</bug_id>
          
          <creation_ts>2021-09-28 14:02:34 -0700</creation_ts>
          <short_desc>Allow `DrawGlyphsRecorder` to be used with any `GraphicsContext` instead of just `DisplayList::Recorder`</short_desc>
          <delta_ts>2021-09-29 16:05:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230912</dependson>
          <blocked>230781</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>hi</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798028</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 14:02:34 -0700</bug_when>
    <thetext>there&apos;s really nothing about `DrawGlyphsRecorder` that&apos;s specific to display lists other than it only being used by `DisplayList::Recorder`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798067</commentid>
    <comment_count>1</comment_count>
      <attachid>439530</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 15:19:40 -0700</bug_when>
    <thetext>Created attachment 439530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798071</commentid>
    <comment_count>2</comment_count>
      <attachid>439530</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-28 15:23:35 -0700</bug_when>
    <thetext>Comment on attachment 439530
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:358
&gt; +    virtual const GraphicsContextState&amp; lastStateChange() const { return state(); }

Still don&apos;t like the word &quot;change&quot;

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:477
&gt; +        drawGlyphs(font, glyphs, advances, numGlyphs, point, fontSmoothingMode);

If all the arguments are identical, why doesn&apos;t DrawGlyphsRecorder just call drawGlyphs() instead of this renamed function?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:153
&gt; +const GraphicsContextState&amp; Recorder::lastStateChange() const

ditto

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:97
&gt; +    const GraphicsContextState&amp; lastStateChange() const final;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798075</commentid>
    <comment_count>3</comment_count>
      <attachid>439530</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 15:34:32 -0700</bug_when>
    <thetext>Comment on attachment 439530
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:358
&gt;&gt; +    virtual const GraphicsContextState&amp; lastStateChange() const { return state(); }
&gt; 
&gt; Still don&apos;t like the word &quot;change&quot;

Do you have any suggestions as to a different name?

Alternatively, do you know why `m_owner.currentState().stateChange.m_state` was written the way it was originally?  Perhaps if I understand that then I can come up with a better name :)

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:477
&gt;&gt; +        drawGlyphs(font, glyphs, advances, numGlyphs, point, fontSmoothingMode);
&gt; 
&gt; If all the arguments are identical, why doesn&apos;t DrawGlyphsRecorder just call drawGlyphs() instead of this renamed function?

`drawGlyphs` is what calls into `DrawGlyphsRecorder`, which then calls into `drawGlyphsAndCacheFont` (which `DisplayList::Recorder` overrides to append a `DrawGlyphs` display list item)

Also FWIW this code already existed before.  I just moved it from being only on `DisplayList::Recorder` to also being on `GraphicsContext`.  Currently the only caller of `DrawGlyphsRecorder::drawGlyphs` is `DisplayList::Recorder::drawGlyphs`, meaning that we need some other method that `DrawGlyphsRecorder` can call once it&apos;s done its work to pass it back to the `DisplayList::Recorder`.  I&apos;m open to other naming ideas if you have any suggestions :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798099</commentid>
    <comment_count>4</comment_count>
      <attachid>439542</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 16:32:47 -0700</bug_when>
    <thetext>Created attachment 439542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798118</commentid>
    <comment_count>5</comment_count>
      <attachid>439542</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-09-28 17:14:52 -0700</bug_when>
    <thetext>Comment on attachment 439542
Patch

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

&gt; Source/WebCore/ChangeLog:41
&gt; +        for the `state` &quot;getter&quot; so that `DrawGlypsRecorder` is able to access the current state in

Nit - DrawGlypsRecorder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798581</commentid>
    <comment_count>6</comment_count>
      <attachid>439664</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-29 14:52:02 -0700</bug_when>
    <thetext>Created attachment 439664
Patch

fix typo in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798649</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-29 16:04:59 -0700</bug_when>
    <thetext>Committed r283273 (242302@main): &lt;https://commits.webkit.org/242302@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439664.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798650</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-29 16:05:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/83693148&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439530</attachid>
            <date>2021-09-28 15:19:40 -0700</date>
            <delta_ts>2021-09-28 16:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230913-20210928151939.patch</filename>
            <type>text/plain</type>
            <size>15018</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjc3YTA5NWNlZWNmNDI4ZThiMDI2ZmVlYjk2YTFkM2E2YmM4NGE1Li42
ZTkxOTBhZWIzZThiZGIwZjZkYTJhY2ZlZGIyM2E1YmZiOWRiNTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRvIGJlIHVzZWQgd2l0aCBh
bnkgYEdyYXBoaWNzQ29udGV4dGAgaW5zdGVhZCBvZiBqdXN0IGBEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVy
ZSdzIHJlYWxseSBub3RoaW5nIGFib3V0IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRoYXQncyBzcGVj
aWZpYyB0byBkaXNwbGF5IGxpc3RzIG90aGVyCisgICAgICAgIHRoYW4gaXQncyBjdXJyZW50bHkg
b25seSBiZWluZyB1c2VkIGJ5IGBEaXNwbGF5TGlzdDo6UmVjb3JkZXJgLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAgd2l0aCBgR3JhcGhpY3ND
b250ZXh0YCBpbiBgRHJhd0dseXBoc1JlY29yZGVyYC4KKyAgICAgICAgSXQgYWxzbyByZXF1aXJl
cyB0aGF0IHR3byBuZXcgbWV0aG9kcyBiZSBhZGRlZCB0byBgR3JhcGhpY3NDb250ZXh0YCB0aGF0
IGFyZSBvdmVycmlkZGVuIGJ5CisgICAgICAgIGBEaXNwbGF5TGlzdDo6UmVjb3JkZXJgLiBUaGlz
IGlzIGJlaW5nIGRvbmUgdG8gbWFrZSBgPGF0dGFjaG1lbnQ+YCBkcmF3aW5nIHdvcmsgaW4gdGhl
CisgICAgICAgIEdQVVByb2Nlc3MgKDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzA3ODE+KS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1Jl
Y29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJ
bnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cHJl
cGFyZUludGVybmFsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3Jk
ZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29y
ZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9E
cmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpsYXN0U3RhdGVDaGFuZ2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0dseXBoc0FuZENhY2hlRm9udCk6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpsYXN0U3RhdGVD
aGFuZ2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6ZHJhd0dseXBoc0FuZENhY2hlRm9udCk6IFJlbmFtZWQgZnJvbSBgYXBwZW5kRHJhd0ds
eXBoc0l0ZW1XaXRoQ2FjaGVkRm9udGAuCisKIDIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYERyYXdHbHlwaHNSZWNvcmRlcmAgb3V0
c2lkZSBvZiBgRGlzcGxheUxpc3RgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IGI3OWQwNDk4NmQ0NmIyOTdmYjVl
MGRhNjAwYzZmZTRmYTNiNTA4NWMuLjJmZmZiNDcxZDgzNmE3YWM3YjBlZTIxNGI1NTA0NWIyMTYx
NWRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdH
bHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ry
YXdHbHlwaHNSZWNvcmRlci5oCkBAIC00NSwxNyArNDUsMTMgQEAgY2xhc3MgRm9udDsKIGNsYXNz
IEdseXBoQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCi1uYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewotY2xhc3MgUmVjb3JkZXI7Ci19Ci0KIGNsYXNzIERyYXdHbHlwaHNSZWNvcmRlciB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gewogICAg
ICAgICBEZWNvbnN0cnVjdCwKICAgICAgICAgRG9udERlY29uc3RydWN0CiAgICAgfTsKLSAgICBl
eHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoRGlzcGxheUxpc3Q6OlJlY29yZGVyJiwgRHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uKTsKKyAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKTsKIAogICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIApAQCAtOTIsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlU2hhZG93KENHU3R5bGVSZWYpOwogI2VuZGlmCiAKLSAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXImIG1fb3duZXI7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX293bmVy
OwogICAgIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bjsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg5NDZl
YjIwODQ1MWM4YmJiOTQwYWI0MTUwNzllYTgxNmU5YjU5YWUuLmY4NTRmMTk1NGRmYWM0ZTM4ZDc2
Y2VmNTkxYjNjMGJiYjU3OTEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNTUsNiArMzU1LDggQEAgcHVibGljOgog
CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQogCisgICAgdmlydHVhbCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgbGFz
dFN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKTsgfQorCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzYXZlKCk7CkBAIC00NzAsNiArNDcyLDExIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4
dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05v
dFBhaW50SWZGb250Tm90UmVhZHkpOwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5n
TW9kZSkKKyAgICB7CisgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywg
bnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAgIH0KKwogICAgIFdFQkNP
UkVfRVhQT1JUIEZsb2F0UmVjdCBjb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChjb25zdCBG
bG9hdFJlY3QmLCBib29sIHByaW50aW5nKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIGJvb2wg
ZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHRoaWNr
bmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDYxMGE1NmFmYTlmNThj
ZDRlM2Y0MTljOTVjMDgyOTNhNmVhZmJlOGEuLmIwODQxOTBmMGE5ODU1OGZlZmJlZmJiM2VlNjRm
NzkwMzkzNmU0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHAKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJGb250LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKQEAgLTg2LDcgKzg0LDcgQEAgVW5p
cXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gRHJhd0dseXBoc1JlY29yZGVyOjpjcmVhdGVJbnRlcm5h
bENvbnRleHQoKQogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dENHPihj
b250ZXh0LmdldCgpKTsKIH0KIAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3Jk
ZXIoRGlzcGxheUxpc3Q6OlJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9u
IGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgOiBtX293bmVyKG93bmVyKQogICAgICwg
bV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQogICAg
ICwgbV9pbnRlcm5hbENvbnRleHQoY3JlYXRlSW50ZXJuYWxDb250ZXh0KCkpCkBAIC0xMDUsNyAr
MTAzLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGUKICAgICBtX29yaWdpbmFsU3RhdGUuc3Ry
b2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFk
aWVudFNwYWNlVHJhbnNmb3JtOwogICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0
ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47CiAKLSAgICBtX29yaWdpbmFsU3RhdGUu
Y3RtID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5jdG07IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFz
ZSBDVE0uCisgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJ
WE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKICAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9m
ZnNldCA9IGNvbnRleHRTdGF0ZS5zaGFkb3dPZmZzZXQ7CiAgICAgbV9vcmlnaW5hbFN0YXRlLnNo
YWRvdy5ibHVyID0gY29udGV4dFN0YXRlLnNoYWRvd0JsdXI7CkBAIC0xNTYsNyArMTU0LDcgQEAg
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJbnRlcm5hbENvbnRleHQoY29uc3QgRm9u
dCYgZm9udCwgRm9udFNtb290aGluZ00KICAgICBpZiAoZm9udC5wbGF0Zm9ybURhdGEoKS5vcmll
bnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgIG1fb3JpZ2lu
YWxUZXh0TWF0cml4ID0gY29tcHV0ZVZlcnRpY2FsVGV4dE1hdHJpeChmb250LCBtX29yaWdpbmFs
VGV4dE1hdHJpeCk7CiAKLSAgICBhdXRvJiBjb250ZXh0U3RhdGUgPSBtX293bmVyLmN1cnJlbnRT
dGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAgYXV0byYgY29udGV4dFN0YXRlID0gbV9v
d25lci5sYXN0U3RhdGVDaGFuZ2UoKTsKICAgICBwb3B1bGF0ZUludGVybmFsU3RhdGUoY29udGV4
dFN0YXRlKTsKICAgICBwb3B1bGF0ZUludGVybmFsQ29udGV4dChjb250ZXh0U3RhdGUpOwogfQpA
QCAtMzM1LDcgKzMzMyw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5
cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAgICAgdXBkYXRlU3Ry
b2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikp
OwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCi0gICAgbV9v
d25lci5hcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwg
Z2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1
cnJlbnRUZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2lu
dChwb3NpdGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOworICAgIG1fb3duZXIuZHJhd0dseXBo
c0FuZENhY2hlRm9udCgqbV9vcmlnaW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJv
bVBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0YSgpLCBj
b3VudCwgY3VycmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9zbW9vdGhp
bmdNb2RlKTsKIAogICAgIG1fb3duZXIuY29uY2F0Q1RNKGludmVyc2VDVE1GaXh1cCk7CiB9CkBA
IC00MTMsNyArNDExLDcgQEAgc3RhdGljIEdseXBoc0FuZEFkdmFuY2VzIGZpbHRlck91dE9UU1ZH
R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmUKIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgewotICAgICAg
ICBtX293bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAg
ICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMs
IG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAx
ZTQ3MjE3ZTA3NGNlNTg3YmNhZmZjZmVhYjRjMzEwMGJkYTE1Y2E0Li43YjM3ZDQ3NzE2ZmI0MDE0
ODViM2JhNDkxNTBlOWNkOWViZTIwNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCkBAIC0xNTAsNiArMTUwLDExIEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0
YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKICAgICBjdXJyZW50U3RhdGUoKS5sYXN0RHJhd2lu
Z1N0YXRlID0gc3RhdGVDaGFuZ2VzLm1fc3RhdGU7CiB9CiAKK2NvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBSZWNvcmRlcjo6bGFzdFN0YXRlQ2hhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKK30KKwogdm9pZCBSZWNvcmRlcjo6
dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBjdXJyZW50U3RhdGUo
KS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CkBAIC0xOTAsNyArMTk1LDcg
QEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnMKICAgICBtX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3
R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0
aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmIChtX2Rl
bGVnYXRlKQogICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGNvbnN0X2Nhc3Q8Rm9u
dCY+KGZvbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGQy
NjhlZDQyZDNhY2ViMTQ3ZjVkNmY1MzNkM2QwNWYzOWY2OTRlY2QuLjIzZGY3YzFjNzM2YmZmYzg1
N2NjZjNiMTBiMzEzZTU0YTliOGRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaApAQCAtNzcsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaENvbnRleHQo
Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRp
Zmllcik7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RHJhd0dseXBo
c1JlY29yZGVyOwogICAgIFJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk1LDYgKzk0LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wsIGJvb2wsIFN0cm9rZVN0eWxlKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgbGFzdFN0YXRlQ2hhbmdlKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXAp
IGZpbmFsOwpAQCAtMTIxLDggKzEyMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQg
ZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
YW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLQotICAgIHZvaWQgYXBwZW5k
RHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQg
ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCiAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBmaW5hbDsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3
R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggMTAwOGMz
ODA2NmQxNDZiNWFhYTM1MDY1YTNiNjc3NWY5YjcxY2ZmMi4uMzliNDg1ZTJjMDY1ZDcyMjFiMjg5
YzdkZGYwMzI5NjQ4ZjFkMzY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtMjYsMjIgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAKLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0
ZW1zLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNv
cmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRl
eHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgOiBtX293bmVyKG93bmVy
KQogewogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293
bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVy
LmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdH
bHlwaHNSZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAppbmRleCBiZDAwOTFmODhhM2ZjNjAxZjFkMGY0
ZTM2YzAwMjdlZTRjMTY5MzI5Li40MzlkNDFjN2U0MWViNjQzODIwMDM4MjM0ZTUyMzhhODY2ODUw
OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJh
d0dseXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtMjYsMjIgKzI2LDIwIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAKLSNp
bmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXImIG93bmVyLCBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNS
ZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24p
CiAgICAgOiBtX293bmVyKG93bmVyKQogewogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlw
aHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3Ro
aW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZv
bnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290
aGluZ01vZGUpOworICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250LCBnbHlw
aHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439542</attachid>
            <date>2021-09-28 16:32:47 -0700</date>
            <delta_ts>2021-09-29 14:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230913-20210928163247.patch</filename>
            <type>text/plain</type>
            <size>15581</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NzEzOTE2YzA3ZDU1OWIyODhmZDE0ZjRlNjc3NDUzYjI5N2Y4MjYzLi4y
MjA1ODdlYjBiZDY5NTA4NTFkZjg3NTk2YTUwMDZkNTlhNGMzNDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDYgQEAKKzIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRvIGJlIHVzZWQgd2l0aCBh
bnkgYEdyYXBoaWNzQ29udGV4dGAgaW5zdGVhZCBvZiBqdXN0IGBEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBUaGVy
ZSdzIHJlYWxseSBub3RoaW5nIGFib3V0IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRoYXQncyBzcGVj
aWZpYyB0byBkaXNwbGF5IGxpc3RzIG90aGVyCisgICAgICAgIHRoYW4gaXQncyBjdXJyZW50bHkg
b25seSBiZWluZyB1c2VkIGJ5IGBEaXNwbGF5TGlzdDo6UmVjb3JkZXJgLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAgd2l0aCBgR3JhcGhpY3ND
b250ZXh0YCBpbiBgRHJhd0dseXBoc1JlY29yZGVyYC4KKyAgICAgICAgSXQgYWxzbyByZXF1aXJl
cyB0aGF0IG5ldyBtZXRob2RzIGJlIGFkZGVkIHRvIGBHcmFwaGljc0NvbnRleHRgIHRoYXQgYXJl
IG92ZXJyaWRkZW4gYnkKKyAgICAgICAgYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAuIFRoaXMgaXMg
YmVpbmcgZG9uZSB0byBtYWtlIGA8YXR0YWNobWVudD5gIGRyYXdpbmcgd29yayBpbiB0aGUKKyAg
ICAgICAgR1BVUHJvY2VzcyAoPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMDc4MT4pLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVy
bmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJl
SW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6
cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdH
bHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlw
aHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHNBbmRDYWNoZUZvbnQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3RhdGUgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hl
Rm9udCk6IFJlbmFtZWQgZnJvbSBgYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udGAu
CisgICAgICAgIEFGQUlDVCBpdCBzZWVtcyBsaWtlIHRoZSBgbV9zdGF0ZWAgaW4gYEdyYXBoaWNz
Q29udGV4dGAgaGFzIHRoZSBzYW1lIHZhbHVlcyAoYnV0IGlzIGEKKyAgICAgICAgZGlmZmVyZW50
IG9iamVjdCkgYXMgdGhlIGBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlYCBpbiBg
RGlzcGxheUxpc3Q6OlJlY29yZGVyYC4KKyAgICAgICAgTWFueSBvZiB0aGUgbm9uLW92ZXJyaWRl
biBtZXRob2RzIG9uIGBHcmFwaGljc0NvbnRleHRgIChlLmcuIGBzZXRTdHJva2VDb2xvcmApIGJv
dGggbW9kaWZ5CisgICAgICAgIHRoZSBgbV9zdGF0ZWAgYW5kIGNhbGwgYHVwZGF0ZVN0YXRlYCwg
d2hpY2ggYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAgdXNlcyB0byBtb2RpZnkgaXRzCisgICAgICAg
IGBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlYC4gQXMgc3VjaCwgd2Ugc2hvdWxk
IGJlIGFibGUgdG8gZXhwb3NlIGl0IGFzIGFuIG92ZXJyaWRlCisgICAgICAgIGZvciB0aGUgYHN0
YXRlYCAiZ2V0dGVyIiBzbyB0aGF0IGBEcmF3R2x5cHNSZWNvcmRlcmAgaXMgYWJsZSB0byBhY2Nl
c3MgdGhlIGN1cnJlbnQgc3RhdGUgaW4KKyAgICAgICAgYSBgR3JhcGhpY3NDb250ZXh0YC1zdWJj
bGFzcyBhZ25vc3RpYyB3YXkuCisKIDIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgYERyYXdHbHlwaHNSZWNvcmRlcmAgb3V0c2lkZSBv
ZiBgRGlzcGxheUxpc3RgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IGI3OWQwNDk4NmQ0NmIyOTdmYjVlMGRhNjAw
YzZmZTRmYTNiNTA4NWMuLjJmZmZiNDcxZDgzNmE3YWM3YjBlZTIxNGI1NTA0NWIyMTYxNWRhMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlw
aHNSZWNvcmRlci5oCkBAIC00NSwxNyArNDUsMTMgQEAgY2xhc3MgRm9udDsKIGNsYXNzIEdseXBo
QnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCi1uYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewotY2xhc3MgUmVjb3JkZXI7Ci19Ci0KIGNsYXNzIERyYXdHbHlwaHNSZWNvcmRlciB7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gewogICAgICAgICBE
ZWNvbnN0cnVjdCwKICAgICAgICAgRG9udERlY29uc3RydWN0CiAgICAgfTsKLSAgICBleHBsaWNp
dCBEcmF3R2x5cGhzUmVjb3JkZXIoRGlzcGxheUxpc3Q6OlJlY29yZGVyJiwgRHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uKTsKKyAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3ND
b250ZXh0JiwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKTsKIAogICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIApAQCAtOTIsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlU2hhZG93KENHU3R5bGVSZWYpOwogI2VuZGlmCiAKLSAgICBEaXNwbGF5TGlz
dDo6UmVjb3JkZXImIG1fb3duZXI7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX293bmVyOwogICAg
IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjsKIAog
I2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg5NDZlYjIwODQ1
MWM4YmJiOTQwYWI0MTUwNzllYTgxNmU5YjU5YWUuLmU4Nzk5ZTZiMTEyOWVmMjMzZjM3M2EwZThl
YjIxNGQ0MjBlOGUyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNTMsNyArMzUzLDcgQEAgcHVibGljOgogICAgIGJv
b2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtBcHBl
YXJhbmNlOyB9CiAjZW5kaWYKIAotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CiAKQEAgLTQ3MCw2ICs0NzAs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0
aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQorICAgIHsKKyAgICAgICAgZHJhd0dseXBocyhm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9k
ZSk7CisgICAgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxp
bmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0
JiwgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9
IFNvbGlkU3Ryb2tlKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9v
bCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlk
U3Ryb2tlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKaW5kZXggNjEwYTU2YWZhOWY1OGNkNGUzZjQxOWM5NWMwODI5M2E2ZWFmYmU4YS4uZTIzMmYx
NzE5NDhlMWNmNDI2MjVhMWYyM2M4NjdiYjkzMjZmNTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMjgsOCArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkRpc3BsYXlM
aXN0SXRlbXMuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgpAQCAtODYsNyArODQsNyBAQCBVbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0PiBEcmF3R2x5cGhz
UmVjb3JkZXI6OmNyZWF0ZUludGVybmFsQ29udGV4dCgpCiAgICAgcmV0dXJuIG1ha2VVbmlxdWVS
ZWY8R3JhcGhpY3NDb250ZXh0Q0c+KGNvbnRleHQuZ2V0KCkpOwogfQogCi1EcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXImIG93bmVyLCBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorRHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwg
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKICAgICA6
IG1fb3duZXIob3duZXIpCiAgICAgLCBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbihkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgLCBtX2ludGVybmFsQ29udGV4dChjcmVhdGVJbnRlcm5h
bENvbnRleHQoKSkKQEAgLTEwNSw3ICsxMDMsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cG9wdWxhdGVJbnRlcm5hbFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZQog
ICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtID0g
Y29udGV4dFN0YXRlLnN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm07CiAgICAgbV9vcmlnaW5h
bFN0YXRlLnN0cm9rZVN0eWxlLnBhdHRlcm4gPSBjb250ZXh0U3RhdGUuc3Ryb2tlUGF0dGVybjsK
IAotICAgIG1fb3JpZ2luYWxTdGF0ZS5jdG0gPSBtX293bmVyLmN1cnJlbnRTdGF0ZSgpLmN0bTsg
Ly8gRklYTUU6IERlYWwgd2l0aCBiYXNlIENUTS4KKyAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0g
bV9vd25lci5nZXRDVE0oKTsgLy8gRklYTUU6IERlYWwgd2l0aCBiYXNlIENUTS4KIAogICAgIG1f
b3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0ID0gY29udGV4dFN0YXRlLnNoYWRvd09mZnNldDsK
ICAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIgPSBjb250ZXh0U3RhdGUuc2hhZG93Qmx1
cjsKQEAgLTE1Niw3ICsxNTQsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUlu
dGVybmFsQ29udGV4dChjb25zdCBGb250JiBmb250LCBGb250U21vb3RoaW5nTQogICAgIGlmIChm
b250LnBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0
aWNhbCkKICAgICAgICAgbV9vcmlnaW5hbFRleHRNYXRyaXggPSBjb21wdXRlVmVydGljYWxUZXh0
TWF0cml4KGZvbnQsIG1fb3JpZ2luYWxUZXh0TWF0cml4KTsKIAotICAgIGF1dG8mIGNvbnRleHRT
dGF0ZSA9IG1fb3duZXIuY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKKyAgICBh
dXRvJiBjb250ZXh0U3RhdGUgPSBtX293bmVyLnN0YXRlKCk7CiAgICAgcG9wdWxhdGVJbnRlcm5h
bFN0YXRlKGNvbnRleHRTdGF0ZSk7CiAgICAgcG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29udGV4
dFN0YXRlKTsKIH0KQEAgLTMzNSw3ICszMzMsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAog
ICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9yU3BhY2Uo
c3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUp
KTsKIAotICAgIG1fb3duZXIuYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udCgqbV9v
cmlnaW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRN
YXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX293
bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1
dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRy
aXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1sw
XSksIG1fc21vb3RoaW5nTW9kZSk7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RN
Rml4dXApOwogfQpAQCAtNDEzLDcgKzQxMSw3IEBAIHN0YXRpYyBHbHlwaHNBbmRBZHZhbmNlcyBm
aWx0ZXJPdXRPVFNWR0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlCiB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwg
Rm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBpZiAobV9kcmF3R2x5cGhz
RGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1
Y3QpIHsKLSAgICAgICAgbV9vd25lci5hcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5n
TW9kZSk7CisgICAgICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250LCBnbHlw
aHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKaW5kZXggMWU0NzIxN2UwNzRjZTU4N2JjYWZmY2ZlYWI0YzMxMDBiZGExNWNhNC4uM2Ni
N2JkNGRmYjI1NzRlZjkyNjc0MzYyZTEwNWM1Yzg5NzdmNzAxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTUwLDYgKzE1MCwxMSBAQCB2b2lkIFJlY29y
ZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCiAgICAgY3VycmVudFN0YXRl
KCkubGFzdERyYXdpbmdTdGF0ZSA9IHN0YXRlQ2hhbmdlcy5tX3N0YXRlOwogfQogCitjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsKK30KKwogdm9pZCBSZWNvcmRl
cjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBjdXJyZW50U3Rh
dGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CkBAIC0xOTAsNyArMTk1
LDcgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnMKICAgICBtX2RyYXdHbHlwaHNSZWNvcmRlci5k
cmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwg
c21vb3RoaW5nTW9kZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHbHlwaHNJdGVt
V2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3Vu
dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290
aGluZ01vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZm
ZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIGlmICht
X2RlbGVnYXRlKQogICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGNvbnN0X2Nhc3Q8
Rm9udCY+KGZvbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IGQyNjhlZDQyZDNhY2ViMTQ3ZjVkNmY1MzNkM2QwNWYzOWY2OTRlY2QuLjQ3MDQyYTJjY2NlYzk0
ODUxNjFhY2I4NmM0NTVhZTE1ZmQ4NGUzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtNzcsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaENvbnRl
eHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRl
bnRpZmllcik7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RHJhd0ds
eXBoc1JlY29yZGVyOwogICAgIFJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTk1LDYgKzk0LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYs
IGNvbnN0IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQg
ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wsIGJvb2wsIFN0cm9rZVN0eWxl
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgdXBkYXRlU3RhdGUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVD
aGFuZ2VGbGFncykgZmluYWw7CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7
CkBAIC0xMjEsOCArMTIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZm
ZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQ
b2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwotCi0gICAgdm9pZCBhcHBlbmREcmF3R2x5
cGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0
UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgdm9pZCBkcmF3R2x5
cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZp
bmFsOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNS
ZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAppbmRleCAxMDA4YzM4MDY2ZDE0
NmI1YWFhMzUwNjVhM2I2Nzc1ZjliNzFjZmYyLi4zOWI0ODVlMmMwNjVkNzIyMWIyODljN2RkZjAz
Mjk2NDhmMWQzNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1
enouY3BwCkBAIC0yNiwyMiArMjYsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJEcmF3R2x5cGhzUmVjb3JkZXIuaCIKIAotI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKERp
c3BsYXlMaXN0OjpSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0Ry
YXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3du
ZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKICAgICA6IG1fb3duZXIob3duZXIpCiB7CiB9
CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBv
aW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewotICAgIG1fb3duZXIuYXBw
ZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIuZHJhd0ds
eXBoc0FuZENhY2hlRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0
UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3
R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IGJkMDA5MWY4OGEzZmM2MDFmMWQwZjRlMzZjMDAy
N2VlNGMxNjkzMjkuLjQzOWQ0MWM3ZTQxZWI2NDM4MjAwMzgyMzRlNTIzOGE4NjY4NTA4ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhz
UmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0yNiwyMiArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJEcmF3R2x5cGhzUmVjb3JkZXIuaCIKIAotI2luY2x1ZGUg
IkRpc3BsYXlMaXN0SXRlbXMuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHbHlw
aEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc1JlY29yZGVyKERpc3BsYXlMaXN0OjpSZWNvcmRlciYgb3duZXIsIERyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbikKK0RyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVy
KEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKICAgICA6
IG1fb3duZXIob3duZXIpCiB7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQogewotICAgIG1fb3duZXIuYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250
LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9k
ZSk7CisgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439664</attachid>
            <date>2021-09-29 14:52:02 -0700</date>
            <delta_ts>2021-09-29 16:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>230913.diff</filename>
            <type>text/plain</type>
            <size>15582</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NzEzOTE2YzA3ZDU1OWIyODhmZDE0ZjRlNjc3NDUzYjI5N2Y4MjYzLi4y
MjA1ODdlYjBiZDY5NTA4NTFkZjg3NTk2YTUwMDZkNTlhNGMzNDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDYgQEAKKzIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRvIGJlIHVzZWQgd2l0aCBh
bnkgYEdyYXBoaWNzQ29udGV4dGAgaW5zdGVhZCBvZiBqdXN0IGBEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBUaGVy
ZSdzIHJlYWxseSBub3RoaW5nIGFib3V0IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRoYXQncyBzcGVj
aWZpYyB0byBkaXNwbGF5IGxpc3RzIG90aGVyCisgICAgICAgIHRoYW4gaXQncyBjdXJyZW50bHkg
b25seSBiZWluZyB1c2VkIGJ5IGBEaXNwbGF5TGlzdDo6UmVjb3JkZXJgLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAgd2l0aCBgR3JhcGhpY3ND
b250ZXh0YCBpbiBgRHJhd0dseXBoc1JlY29yZGVyYC4KKyAgICAgICAgSXQgYWxzbyByZXF1aXJl
cyB0aGF0IG5ldyBtZXRob2RzIGJlIGFkZGVkIHRvIGBHcmFwaGljc0NvbnRleHRgIHRoYXQgYXJl
IG92ZXJyaWRkZW4gYnkKKyAgICAgICAgYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAuIFRoaXMgaXMg
YmVpbmcgZG9uZSB0byBtYWtlIGA8YXR0YWNobWVudD5gIGRyYXdpbmcgd29yayBpbiB0aGUKKyAg
ICAgICAgR1BVUHJvY2VzcyAoPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMDc4MT4pLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVy
bmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJl
SW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6
cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdH
bHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlw
aHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHNBbmRDYWNoZUZvbnQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3RhdGUgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hl
Rm9udCk6IFJlbmFtZWQgZnJvbSBgYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udGAu
CisgICAgICAgIEFGQUlDVCBpdCBzZWVtcyBsaWtlIHRoZSBgbV9zdGF0ZWAgaW4gYEdyYXBoaWNz
Q29udGV4dGAgaGFzIHRoZSBzYW1lIHZhbHVlcyAoYnV0IGlzIGEKKyAgICAgICAgZGlmZmVyZW50
IG9iamVjdCkgYXMgdGhlIGBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlYCBpbiBg
RGlzcGxheUxpc3Q6OlJlY29yZGVyYC4KKyAgICAgICAgTWFueSBvZiB0aGUgbm9uLW92ZXJyaWRl
biBtZXRob2RzIG9uIGBHcmFwaGljc0NvbnRleHRgIChlLmcuIGBzZXRTdHJva2VDb2xvcmApIGJv
dGggbW9kaWZ5CisgICAgICAgIHRoZSBgbV9zdGF0ZWAgYW5kIGNhbGwgYHVwZGF0ZVN0YXRlYCwg
d2hpY2ggYERpc3BsYXlMaXN0OjpSZWNvcmRlcmAgdXNlcyB0byBtb2RpZnkgaXRzCisgICAgICAg
IGBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlYC4gQXMgc3VjaCwgd2Ugc2hvdWxk
IGJlIGFibGUgdG8gZXhwb3NlIGl0IGFzIGFuIG92ZXJyaWRlCisgICAgICAgIGZvciB0aGUgYHN0
YXRlYCAiZ2V0dGVyIiBzbyB0aGF0IGBEcmF3R2x5cGhzUmVjb3JkZXJgIGlzIGFibGUgdG8gYWNj
ZXNzIHRoZSBjdXJyZW50IHN0YXRlIGluCisgICAgICAgIGEgYEdyYXBoaWNzQ29udGV4dGAtc3Vi
Y2xhc3MgYWdub3N0aWMgd2F5LgorCiAyMDIxLTA5LTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGBEcmF3R2x5cGhzUmVjb3JkZXJgIG91dHNpZGUg
b2YgYERpc3BsYXlMaXN0YApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCBiNzlkMDQ5ODZkNDZiMjk3ZmI1ZTBkYTYw
MGM2ZmU0ZmEzYjUwODVjLi4yZmZmYjQ3MWQ4MzZhN2FjN2IwZWUyMTRiNTUwNDViMjE2MTVkYTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhz
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5
cGhzUmVjb3JkZXIuaApAQCAtNDUsMTcgKzQ1LDEzIEBAIGNsYXNzIEZvbnQ7CiBjbGFzcyBHbHlw
aEJ1ZmZlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAotbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKLWNsYXNzIFJlY29yZGVyOwotfQotCiBjbGFzcyBEcmF3R2x5cGhzUmVjb3JkZXIgewogcHVi
bGljOgogICAgIGVudW0gY2xhc3MgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uIHsKICAgICAgICAg
RGVjb25zdHJ1Y3QsCiAgICAgICAgIERvbnREZWNvbnN0cnVjdAogICAgIH07Ci0gICAgZXhwbGlj
aXQgRHJhd0dseXBoc1JlY29yZGVyKERpc3BsYXlMaXN0OjpSZWNvcmRlciYsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbik7CisgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbik7CiAKICAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBv
aW50LCBGb250U21vb3RoaW5nTW9kZSk7CiAKQEAgLTkyLDcgKzg4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKICNlbmRpZgogCi0gICAgRGlzcGxheUxp
c3Q6OlJlY29yZGVyJiBtX293bmVyOworICAgIEdyYXBoaWNzQ29udGV4dCYgbV9vd25lcjsKICAg
ICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb247CiAK
ICNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4OTQ2ZWIyMDg0
NTFjOGJiYjk0MGFiNDE1MDc5ZWE4MTZlOWI1OWFlLi5lODc5OWU2YjExMjllZjIzM2YzNzNhMGU4
ZWIyMTRkNDIwZThlMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZTsgfQogI2VuZGlmCiAKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdmlydHVhbCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOwogCkBAIC00NzAsNiArNDcw
LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFj
dGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCisgICAgdmly
dHVhbCB2b2lkIGRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKKyAgICB7CisgICAgICAgIGRyYXdHbHlwaHMo
Zm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01v
ZGUpOworICAgIH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBjb21wdXRlVW5kZXJs
aW5lQm91bmRzRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUg
PSBTb2xpZFN0cm9rZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3Qg
RmxvYXRQb2ludCYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJv
b2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xp
ZFN0cm9rZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQu
Y3BwCmluZGV4IDYxMGE1NmFmYTlmNThjZDRlM2Y0MTljOTVjMDgyOTNhNmVhZmJlOGEuLmUyMzJm
MTcxOTQ4ZTFjZjQyNjI1YTFmMjNjODY3YmI5MzI2ZjU2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1
ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJEaXNwbGF5
TGlzdEl0ZW1zLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKQEAgLTg2LDcgKzg0LDcgQEAgVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gRHJhd0dseXBo
c1JlY29yZGVyOjpjcmVhdGVJbnRlcm5hbENvbnRleHQoKQogICAgIHJldHVybiBtYWtlVW5pcXVl
UmVmPEdyYXBoaWNzQ29udGV4dENHPihjb250ZXh0LmdldCgpKTsKIH0KIAotRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoRGlzcGxheUxpc3Q6OlJlY29yZGVyJiBvd25lciwg
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdH
bHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIs
IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAg
OiBtX293bmVyKG93bmVyKQogICAgICwgbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oZHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uKQogICAgICwgbV9pbnRlcm5hbENvbnRleHQoY3JlYXRlSW50ZXJu
YWxDb250ZXh0KCkpCkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGUK
ICAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSA9
IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwogICAgIG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRlcm47
CiAKLSAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5jdG07
IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCisgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9
IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKICAgICBt
X29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCA9IGNvbnRleHRTdGF0ZS5zaGFkb3dPZmZzZXQ7
CiAgICAgbV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyID0gY29udGV4dFN0YXRlLnNoYWRvd0Js
dXI7CkBAIC0xNTYsNyArMTU0LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJ
bnRlcm5hbENvbnRleHQoY29uc3QgRm9udCYgZm9udCwgRm9udFNtb290aGluZ00KICAgICBpZiAo
Zm9udC5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVy
dGljYWwpCiAgICAgICAgIG1fb3JpZ2luYWxUZXh0TWF0cml4ID0gY29tcHV0ZVZlcnRpY2FsVGV4
dE1hdHJpeChmb250LCBtX29yaWdpbmFsVGV4dE1hdHJpeCk7CiAKLSAgICBhdXRvJiBjb250ZXh0
U3RhdGUgPSBtX293bmVyLmN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7CisgICAg
YXV0byYgY29udGV4dFN0YXRlID0gbV9vd25lci5zdGF0ZSgpOwogICAgIHBvcHVsYXRlSW50ZXJu
YWxTdGF0ZShjb250ZXh0U3RhdGUpOwogICAgIHBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnRl
eHRTdGF0ZSk7CiB9CkBAIC0zMzUsNyArMzMzLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQK
ICAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNl
KHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRl
KSk7CiAKLSAgICBtX293bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoKm1f
b3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRp
b25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0
TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9v
d25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21w
dXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0
cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNb
MF0pLCBtX3Ntb290aGluZ01vZGUpOwogCiAgICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNU
TUZpeHVwKTsKIH0KQEAgLTQxMyw3ICs0MTEsNyBAQCBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMg
ZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZQog
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFk
dmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQs
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBo
c0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3Ry
dWN0KSB7Ci0gICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9u
dChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGlu
Z01vZGUpOworICAgICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDFlNDcyMTdlMDc0Y2U1ODdiY2FmZmNmZWFiNGMzMTAwYmRhMTVjYTQuLjNj
YjdiZDRkZmIyNTc0ZWY5MjY3NDM2MmUxMDVjNWM4OTc3ZjcwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE1MCw2ICsxNTAsMTEgQEAgdm9pZCBSZWNv
cmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogICAgIGN1cnJlbnRTdGF0
ZSgpLmxhc3REcmF3aW5nU3RhdGUgPSBzdGF0ZUNoYW5nZXMubV9zdGF0ZTsKIH0KIAorY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLm1fc3RhdGU7Cit9CisKIHZvaWQgUmVjb3Jk
ZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCiB7CiAgICAgY3VycmVudFN0
YXRlKCkuc3RhdGVDaGFuZ2UuYWNjdW11bGF0ZShzdGF0ZSwgZmxhZ3MpOwpAQCAtMTkwLDcgKzE5
NSw3IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zCiAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIu
ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQs
IHNtb290aGluZ01vZGUpOwogfQogCi12b2lkIFJlY29yZGVyOjphcHBlbmREcmF3R2x5cGhzSXRl
bVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
IGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9v
dGhpbmdNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBs
b2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBpZiAo
bV9kZWxlZ2F0ZSkKICAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShjb25zdF9jYXN0
PEZvbnQmPihmb250KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBkMjY4ZWQ0MmQzYWNlYjE0N2Y1ZDZmNTMzZDNkMDVmMzlmNjk0ZWNkLi40NzA0MmEyY2NjZWM5
NDg1MTYxYWNiODZjNDU1YWUxNWZkODRlMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTc3LDcgKzc3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2hDb250
ZXh0KEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlk
ZW50aWZpZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkRyYXdH
bHlwaHNSZWNvcmRlcjsKICAgICBSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CiAKICAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05NSw2ICs5NCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
LCBjb25zdCBDb2xvciYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lk
IGRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sLCBib29sLCBTdHJva2VTdHls
ZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCisgICAgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFs
OwpAQCAtMTIxLDggKzEyMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLQotICAgIHZvaWQgYXBwZW5kRHJhd0ds
eXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOworICAgIHZvaWQgZHJhd0ds
eXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhz
UmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggMTAwOGMzODA2NmQx
NDZiNWFhYTM1MDY1YTNiNjc3NWY5YjcxY2ZmMi4uMzliNDg1ZTJjMDY1ZDcyMjFiMjg5YzdkZGYw
MzI5NjQ4ZjFkMzY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcApAQCAtMjYsMjIgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAKLSNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgi
Ci0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihE
aXNwbGF5TGlzdDo6UmVjb3JkZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitE
cmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93
bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgOiBtX293bmVyKG93bmVyKQogewog
fQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQ
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFw
cGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywg
bnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFy
dFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNS
ZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJh
d0dseXBoc1JlY29yZGVyV2luLmNwcAppbmRleCBiZDAwOTFmODhhM2ZjNjAxZjFkMGY0ZTM2YzAw
MjdlZTRjMTY5MzI5Li40MzlkNDFjN2U0MWViNjQzODIwMDM4MjM0ZTUyMzhhODY2ODUwOGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBo
c1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtMjYsMjIgKzI2LDIwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAKLSNpbmNsdWRl
ICJEaXNwbGF5TGlzdEl0ZW1zLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcihEaXNwbGF5TGlzdDo6UmVjb3JkZXImIG93bmVyLCBEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRl
cihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAg
OiBtX293bmVyKG93bmVyKQogewogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGluZ01v
ZGUpOworICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250LCBnbHlwaHMsIGFk
dmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>