<?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>121037</bug_id>
          
          <creation_ts>2013-09-09 12:17:19 -0700</creation_ts>
          <short_desc>[Windows] Create SharedGDIObject Class Templates</short_desc>
          <delta_ts>2013-09-10 14:40:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>120778</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926835</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-09 12:17:19 -0700</bug_when>
    <thetext>This is the second step of Bug 120778.  It creates the SharedGDIObject class template (which is just a RefCounted object with a GDIObject member), and replace the RefCountedGDIHandle object with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927426</commentid>
    <comment_count>1</comment_count>
      <attachid>211224</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-10 12:34:02 -0700</bug_when>
    <thetext>Created attachment 211224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927427</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-10 12:34:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/14957051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927433</commentid>
    <comment_count>3</comment_count>
      <attachid>211224</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-10 12:39:20 -0700</bug_when>
    <thetext>Comment on attachment 211224
Patch

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

&gt; Source/WebCore/platform/graphics/FontPlatformData.h:231
&gt; +    RefPtr&lt;SharedGDIObject&lt;HFONT&gt; &gt; m_font;

No need for the extra space between &gt; &gt;

&gt; Source/WebCore/platform/graphics/win/SharedGDIObject.h:38
&gt; +    static PassRefPtr&lt;SharedGDIObject&gt; create(T object)
&gt; +    {

I think this should take a GDIObject&lt;T&gt; and then use std::move.

&gt; Source/WebKit/win/WebView.h:74
&gt; +typedef WebCore::SharedGDIObject&lt;HBITMAP&gt; RefCountedHBITMAP;
&gt; +typedef WebCore::SharedGDIObject&lt;HRGN&gt; RefCountedHRGN;

Do we really need these typedefs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927454</commentid>
    <comment_count>4</comment_count>
      <attachid>211224</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-10 13:25:57 -0700</bug_when>
    <thetext>Comment on attachment 211224
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontPlatformData.h:231
&gt;&gt; +    RefPtr&lt;SharedGDIObject&lt;HFONT&gt; &gt; m_font;
&gt; 
&gt; No need for the extra space between &gt; &gt;

OK!

&gt;&gt; Source/WebCore/platform/graphics/win/SharedGDIObject.h:38
&gt;&gt; +    {
&gt; 
&gt; I think this should take a GDIObject&lt;T&gt; and then use std::move.

I think we need both, unless we want to manually create the GDIObject&lt;T&gt; in the places that had previously worked with just HFONT/HBRUSH/etc.  I think leaving the (T object) version is a nice convenience.

&gt;&gt; Source/WebKit/win/WebView.h:74
&gt;&gt; +typedef WebCore::SharedGDIObject&lt;HRGN&gt; RefCountedHRGN;
&gt; 
&gt; Do we really need these typedefs?

Probably not. They are only used in two places; I&apos;ve removed them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927455</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-10 13:31:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; I think this should take a GDIObject&lt;T&gt; and then use std::move.
&gt; 
&gt; I think we need both, unless we want to manually create the GDIObject&lt;T&gt; in the places that had previously worked with just HFONT/HBRUSH/etc.  I think leaving the (T object) version is a nice convenience.

Well, maybe not.  The compiler got confused by HFONT versus GDIObject&lt;HFONT&gt; and couldn&apos;t decide which to use.

I guess I&apos;ll just add the &quot;adoptGDIObject&quot; calls to the three or four places that use the bare HFONT interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927459</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-10 13:39:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; I think this should take a GDIObject&lt;T&gt; and then use std::move.
&gt; &gt; 
&gt; &gt; I think we need both, unless we want to manually create the GDIObject&lt;T&gt; in the places that had previously worked with just HFONT/HBRUSH/etc.  I think leaving the (T object) version is a nice convenience.
&gt; 
&gt; Well, maybe not.  The compiler got confused by HFONT versus GDIObject&lt;HFONT&gt; and couldn&apos;t decide which to use.
&gt; 
&gt; I guess I&apos;ll just add the &quot;adoptGDIObject&quot; calls to the three or four places that use the bare HFONT interface.

Yeah, that sounds good. It’s always better to be explicit about the cases where there’s single ownership of a resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927497</commentid>
    <comment_count>7</comment_count>
      <attachid>211242</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-10 14:23:52 -0700</bug_when>
    <thetext>Created attachment 211242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927504</commentid>
    <comment_count>8</comment_count>
      <attachid>211242</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-10 14:27:59 -0700</bug_when>
    <thetext>Comment on attachment 211242
Patch

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

&gt; Source/WebCore/platform/graphics/win/SharedGDIObject.h:53
&gt; +    SharedGDIObject(GDIObject&lt;T&gt; object)

I’d make this explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927510</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-10 14:40:37 -0700</bug_when>
    <thetext>Committed r155476: &lt;http://trac.webkit.org/changeset/155476&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211224</attachid>
            <date>2013-09-10 12:34:02 -0700</date>
            <delta_ts>2013-09-10 14:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121037-20130910123356.patch</filename>
            <type>text/plain</type>
            <size>24319</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTU0NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA5LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBDcmVhdGUgU2hhcmVkR0RJT2Jq
ZWN0IENsYXNzIFRlbXBsYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjEwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOb3cgdGhhdCB0aGUgU2hhcmVkR0RJT2JqZWN0IGNsYXNzIGV4aXN0cyB3ZSBj
YW4gZ2V0IHJpZCBvZgorICAgICAgICB0aGUgV2luZG93cy1zcGVjaWZpYyBjb2RlIGluIE93blB0
ci4KKworICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOiBSZW1vdmUgT3duUHRyV2lu
LmNwcC4KKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOiBEaXR0by4K
KyAgICAgICAgKiB3dGYvT3duUHRyQ29tbW9uLmg6IAorICAgICAgICAoV1RGOjpkZWxldGVPd25l
ZFB0cik6IFJlbW92ZSBXaW5kb3dzIGRlY2xhcmF0aW9ucyB0aGF0CisgICAgICAgIGFyZSBubyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAqIHd0Zi93aW4vR0RJT2JqZWN0Lmg6CisgICAgICAgIChX
VEY6OkdESU9iamVjdDo6Z2V0KTogQ2hhbmdlIHRvICdjb25zdCcgdG8gbWF0Y2gKKyAgICAgICAg
c2lnbmF0dXJlIChhbmQgdXNlIGNhc2VzKSBlbHNld2hlcmUgaW4gdGhlIGNvZGUgYmFzZSBmb3IK
KyAgICAgICAgb3VyIHNtYXJ0IHBvaW50ZXIgY2xhc3Nlcy4KKyAgICAgICAgKiB3dGYvd2luL093
blB0cldpbi5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMDktMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIENoYW5nZSBmcm9tIHVzaW5nIE93
blB0cjxHREkgU3R1ZmY+IHRvIG5ldyBHRElPYmplY3QgdGVtcGxhdGUuCkluZGV4OiBTb3VyY2Uv
V1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2oJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHVuaWNvZGVcaWN1XENvbGxhdG9ySUNVLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdW5pY29kZVxVVEY4LmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcd2luXE1haW5UaHJlYWRXaW4uY3Bw
IiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx3aW5cT3duUHRyV2luLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcV1RGVGhyZWFkRGF0YS5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNjaGVkdWxlUGFpckNGLmNwcCIgLz4N
CiAgIDwvSXRlbUdyb3VwPg0KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzgsOSArNzgsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHdpblxNYWluVGhyZWFkV2luLmNwcCI+DQogICAg
ICAgPEZpbHRlcj53aW48L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cd3RmXHdpblxPd25QdHJXaW4uY3BwIj4NCi0gICAgICA8RmlsdGVyPndp
bjwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcdGhyZWFkc1x3aW5cQmluYXJ5U2VtYXBob3JlV2luLmNwcCI+DQogICAgICAgPEZpbHRl
cj50aHJlYWRzXHdpbjwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Pd25QdHJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25Q
dHJDb21tb24uaAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dURi93dGYvT3duUHRyQ29t
bW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFu
eSAxMDAgSW5jLgogICoKQEAgLTI4LDEyICsyOCw2IEBACiAjaWZuZGVmIFdURl9Pd25QdHJDb21t
b25faAogI2RlZmluZSBXVEZfT3duUHRyQ29tbW9uX2gKIAotI2lmIE9TKFdJTkRPV1MpCi10eXBl
ZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7Ci10eXBlZGVmIHN0cnVjdCBIRENfXyogSERD
OwotdHlwZWRlZiBzdHJ1Y3QgSFJHTl9fKiBIUkdOOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShF
RkwpCiB0eXBlZGVmIHN0cnVjdCBfRWNvcmVfRXZhcyBFY29yZV9FdmFzOwogdHlwZWRlZiBzdHJ1
Y3QgX0Vjb3JlX0lNRl9Db250ZXh0IEVjb3JlX0lNRl9Db250ZXh0OwpAQCAtNTksMTIgKzUzLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBkZWxldGUgcHRyOwogICAgIH0KIAotI2lm
IE9TKFdJTkRPV1MpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIo
SEJJVE1BUCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoSERD
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVPd25lZFB0cihIUkdOKTsKLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oRUZMKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRl
bGV0ZU93bmVkUHRyKEVjb3JlX0V2YXMqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZWxldGVPd25lZFB0cihFY29yZV9JTUZfQ29udGV4dCopOwpJbmRleDogU291cmNlL1dURi93dGYv
d2luL0dESU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3dpbi9HRElPYmpl
Y3QuaAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dURi93dGYvd2luL0dESU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHRElPYmplY3Qo
KSA6IG1fb2JqZWN0KDApIHsgfQogICAgIH5HRElPYmplY3QoKSB7IGRlbGV0ZU9iamVjdDxUPiht
X29iamVjdCk7IH0KIAotICAgIFQgZ2V0KCkgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICBUIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAg
VCBsZWFrKCkgV0FSTl9VTlVTRURfUkVUVVJOOwpJbmRleDogU291cmNlL1dURi93dGYvd2luL093
blB0cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL093blB0cldpbi5j
cHAJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9Pd25QdHJXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiT3duUHRyLmgiCi0KLSNpZiBPUyhXSU5ET1dTKQotCi0jaW5jbHVkZSA8d2luZG93
cy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBkZWxldGVPd25lZFB0cihIQklUTUFQIHB0
cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBEZWxldGVPYmplY3QocHRyKTsKLX0KLQotdm9p
ZCBkZWxldGVPd25lZFB0cihIREMgcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIERlbGV0
ZURDKHB0cik7Ci19Ci0KLXZvaWQgZGVsZXRlT3duZWRQdHIoSFJHTiBwdHIpCi17Ci0gICAgaWYg
KHB0cikKLSAgICAgICAgRGVsZXRlT2JqZWN0KHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI4IEBACisyMDEzLTA5LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIFtXaW5kb3dzXSBDcmVhdGUgU2hhcmVkR0RJT2JqZWN0IENsYXNzIFRlbXBsYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwMzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IFJlbW92ZSBSZWZDb3VudGVkR0RJSGFuZGxlLmgs
IGFuZAorICAgICAgICBhZGQgbmV3IFNoYXJlZEdESU9iamVjdC5oIGZpbGUuCisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpoZm9udCk6IFN3aXRjaCB0byBuZXcgU2hhcmVkR0RJT2JqZWN0
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OkZvbnRQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUmVmQ291bnRlZEdESUhhbmRsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHRElPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElP
YmplY3Q6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0OjpTaGFyZWRHRElPYmplY3QpOgorCiAy
MDEzLTA5LTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNdIFBERkRvY3VtZW50SW1hZ2Ugc2hvdWxkIHVzZSBQREZLaXQgdG8gZHJhdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNTU0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI5OSw2ICsxOTI5OSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2xcR0xQbGF0Zm9ybUNv
bnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW5nbFxHTFBsYXRmb3JtU3VyZmFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcVmlkZW9UcmFja1ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxTaGFyZWRHRElPYmplY3QuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhvc3RXaW5kb3cuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nLmgiIC8+CkBA
IC0xOTQ2Nyw3ICsxOTQ2OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVR5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVV0aWxpdGllcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5
cGVcT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkR0RJSGFuZGxlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cVW5pc2NyaWJlQ29udHJv
bGxlci5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luXFdLQ0FJbWFnZVF1ZXVlLmgiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzA5Nyw2ICs3MDk3LDggQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxTdHJ1Y3R1cmVkRXhjZXB0aW9uSGFu
ZGxlclN1cHByZXNzb3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNCZWZvcmVVbmxvYWRFdmVudC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcRmxvYXRpbmdPYmplY3RzLmNwcCIgLz4KICAgPC9JdGVtR3Jv
dXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyLmgiPgpAQCAtODU4MSw5ICs4NTgzLDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBl
VmVydGljYWxEYXRhLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkR0RJSGFuZGxlLmgiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxVbmlzY3JpYmVDb250cm9s
bGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTE0ODk3LDYgKzE0ODk2LDExIEBACiAgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVs
ZW1lbnRUeXBlSGVscGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXFNWR0VsZW1lbnRUeXBlSGVscGVycy5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlVW5sb2FkRXZlbnQu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xGbG9hdGluZ09iamVj
dHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
blxTaGFyZWRHRElPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdp
bjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluIj4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2lu
Y2x1ZGUgIkZvbnRXaWR0aFZhcmlhbnQuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRl
ICJSZWZDb3VudGVkR0RJSGFuZGxlLmgiCisjaW5jbHVkZSAiU2hhcmVkR0RJT2JqZWN0LmgiCiAj
ZW5kaWYKIAogI2lmIFVTRShDQUlSTykKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAg
fkZvbnRQbGF0Zm9ybURhdGEoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBIRk9OVCBoZm9u
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9udC0+aGFuZGxlKCkgOiAwOyB9CisgICAg
SEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmdldCgpIDogMDsg
fQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91c2VHREk7IH0KICNlbGlmIE9T
KERBUldJTikKICAgICBOU0ZvbnQqIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0KQEAg
LTIyOCw3ICsyMjgsNyBAQCBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBOU0ZvbnQqIG1f
Zm9udDsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICBSZWZQdHI8UmVmQ291bnRlZEdESUhhbmRs
ZTxIRk9OVD4gPiBtX2ZvbnQ7CisgICAgUmVmUHRyPFNoYXJlZEdESU9iamVjdDxIRk9OVD4gPiBt
X2ZvbnQ7CiAjZW5kaWYKIAogI2lmIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dX
aW4uY3BwCShyZXZpc2lvbiAxNTU0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURh
dGEuaCIKIAorI2luY2x1ZGUgIlNoYXJlZEdESU9iamVjdC5oIgogI2luY2x1ZGUgPEFwcGxpY2F0
aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMTIwLDcgKzEyMSw3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEoSEZPTlQKICAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkKICAgICAsIG1fc2l6ZShz
aXplKQogICAgICwgbV93aWR0aFZhcmlhbnQoUmVndWxhcldpZHRoKQotICAgICwgbV9mb250KFJl
ZkNvdW50ZWRHRElIYW5kbGU8SEZPTlQ+OjpjcmVhdGUoaGZvbnQpKQorICAgICwgbV9mb250KFNo
YXJlZEdESU9iamVjdDxIRk9OVD46OmNyZWF0ZShoZm9udCkpCiAgICAgLCBtX2NnRm9udChmb250
KQogICAgICwgbV9pc0NvbG9yQml0bWFwRm9udChmYWxzZSkKICAgICAsIG1fdXNlR0RJKHVzZUdE
SSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAxNTU0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtRGF0YUluaXQoCiB9CiAKIEZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoSEZPTlQgZm9udCwgY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNl
LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSkKLSAgICA6IG1fZm9udChSZWZD
b3VudGVkR0RJSGFuZGxlPEhGT05UPjo6Y3JlYXRlKGZvbnQpKQorICAgIDogbV9mb250KFNoYXJl
ZEdESU9iamVjdDxIRk9OVD46OmNyZWF0ZShmb250KSkKICAgICAsIG1fc2l6ZShzaXplKQogICAg
ICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQogICAgICwgbV93aWR0aFZhcmlhbnQoUmVndWxh
cldpZHRoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAkocmV2aXNpb24gMTU1NDU0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIHN0ZDo6bWluOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KEhGT05UIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVz
ZUdESSkKLSAgICA6IG1fZm9udChSZWZDb3VudGVkR0RJSGFuZGxlPEhGT05UPjo6Y3JlYXRlKGZv
bnQpKQorICAgIDogbV9mb250KFNoYXJlZEdESU9iamVjdDxIRk9OVD46OmNyZWF0ZShmb250KSkK
ICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQogICAg
ICwgbV93aWR0aFZhcmlhbnQoUmVndWxhcldpZHRoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1JlZkNvdW50ZWRHRElIYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291bnRlZEdESUhhbmRsZS5o
CShyZXZpc2lvbiAxNTU0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUmVmQ291bnRlZEdESUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2lmbmRlZiBSZWZDb3VudGVkR0RJSGFuZGxlX2gKLSNkZWZpbmUgUmVmQ291bnRlZEdESUhh
bmRsZV9oCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
UmVmQ291bnRlZEdESUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZkNvdW50ZWRHRElIYW5k
bGU8VD4gPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmQ291bnRlZEdESUhh
bmRsZT4gY3JlYXRlKFQgaGFuZGxlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZWZDb3VudGVkR0RJSGFuZGxlPFQ+KGhhbmRsZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlZkNvdW50ZWRHRElIYW5kbGU8VD4gPiBjcmVhdGVEZWxldGVkKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVmQ291bnRlZEdESUhhbmRsZTxUPihyZWlu
dGVycHJldF9jYXN0PFQ+KC0xKSkpOwotICAgIH0KLQotICAgIH5SZWZDb3VudGVkR0RJSGFuZGxl
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2hhbmRsZSAhPSByZWludGVycHJldF9jYXN0PFQ+KC0x
KSkKLSAgICAgICAgICAgIFdURjo6ZGVsZXRlT3duZWRQdHIobV9oYW5kbGUpOwotICAgIH0KLQot
ICAgIFQgaGFuZGxlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2hhbmRsZTsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBX
VEY6OlB0ckhhc2g8VD46Omhhc2gobV9oYW5kbGUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBS
ZWZDb3VudGVkR0RJSGFuZGxlKFQgaGFuZGxlKQotICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgVCBtX2hhbmRsZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFJlZkNvdW50ZWRHRElIYW5kbGVfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3Qu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9T
aGFyZWRHRElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkR0RJ
T2JqZWN0X2gKKyNkZWZpbmUgU2hhcmVkR0RJT2JqZWN0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvd2lu
L0dESU9iamVjdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBTaGFyZWRHRElPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRHRElP
YmplY3Q8VD4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRHRElPYmpl
Y3Q+IGNyZWF0ZShUIG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkR0RJT2JqZWN0PFQ+KG9iamVjdCkpOworICAgIH0KKworICAgIFQgZ2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVjdC5nZXQoKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8VD46
Omhhc2gobV9vYmplY3QuZ2V0KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFyZWRHRElP
YmplY3QoVCBvYmplY3QpCisgICAgICAgIDogbV9vYmplY3QoYWRvcHRHRElPYmplY3Q8VD4ob2Jq
ZWN0KSkKKyAgICB7CisgICAgfQorCisgICAgR0RJT2JqZWN0PFQ+IG1fb2JqZWN0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhcmVkR0RJT2JqZWN0X2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA5LTEwICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBD
cmVhdGUgU2hhcmVkR0RJT2JqZWN0IENsYXNzIFRlbXBsYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwMzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOiBDaGFuZ2UgaW1wbGVt
ZW50YXRpb25zIHRvIHVzZSB0aGUgbmV3IFNoYXJlZEdESU9iamVjdAorICAgICAgICBjbGFzcy4K
KyAgICAgICAgKFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24pOgorICAgICAgICAoV2ViVmlldzo6
c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0ZSk6CisgICAg
ICAgIChXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJWaWV3OjpiYWNraW5nU3RvcmUpOgor
ICAgICAgICAqIFdlYlZpZXcuaDogRGl0dG8uCisKIDIwMTMtMDktMDkgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIENoYW5nZSBmcm9tIHVz
aW5nIE93blB0cjxHREkgU3R1ZmY+IHRvIG5ldyBHRElPYmplY3QgdGVtcGxhdGUuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1NywxMCArODU3LDEwIEBAIHZvaWQgV2Vi
Vmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihIUkdOIG5ld1IKICAgICBMT0NBTF9HRElfQ09VTlRFUigw
LCBfX0ZVTkNUSU9OX18pOwogCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb24pIHsK
LSAgICAgICAgSFJHTiBjb21iaW5lZFJlZ2lvbiA9IDo6Q3JlYXRlUmVjdFJnbigwLDAsMCwwKTsK
LSAgICAgICAgOjpDb21iaW5lUmduKGNvbWJpbmVkUmVnaW9uLCBtX2JhY2tpbmdTdG9yZURpcnR5
UmVnaW9uLT5oYW5kbGUoKSwgbmV3UmVnaW9uLCBSR05fT1IpOworICAgICAgICBhdXRvIGNvbWJp
bmVkUmVnaW9uID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVSZWN0UmduKDAsIDAsIDAsIDApKTsK
KyAgICAgICAgOjpDb21iaW5lUmduKGNvbWJpbmVkUmVnaW9uLmdldCgpLCBtX2JhY2tpbmdTdG9y
ZURpcnR5UmVnaW9uLT5nZXQoKSwgbmV3UmVnaW9uLCBSR05fT1IpOwogICAgICAgICA6OkRlbGV0
ZU9iamVjdChuZXdSZWdpb24pOwotICAgICAgICBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uID0g
UmVmQ291bnRlZEhSR046OmNyZWF0ZShjb21iaW5lZFJlZ2lvbik7CisgICAgICAgIG1fYmFja2lu
Z1N0b3JlRGlydHlSZWdpb24gPSBSZWZDb3VudGVkSFJHTjo6Y3JlYXRlKGNvbWJpbmVkUmVnaW9u
LmxlYWsoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb24g
PSBSZWZDb3VudGVkSFJHTjo6Y3JlYXRlKG5ld1JlZ2lvbik7CiAKQEAgLTg5NSw3ICs4OTUsNyBA
QCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAgICAgLy8gQ29sbGVj
dCBvdXIgZGV2aWNlIGNvbnRleHQgaW5mbyBhbmQgc2VsZWN0IHRoZSBiaXRtYXAgdG8gc2Nyb2xs
LgogICAgIEhXbmREQyB3aW5kb3dEQyhtX3ZpZXdXaW5kb3cpOwogICAgIGF1dG8gYml0bWFwREMg
PSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOwotICAgIEhH
RElPQkogb2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIG1fYmFja2lu
Z1N0b3JlQml0bWFwLT5oYW5kbGUoKSk7CisgICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVj
dE9iamVjdChiaXRtYXBEQy5nZXQoKSwgbV9iYWNraW5nU3RvcmVCaXRtYXAtPmdldCgpKTsKICAg
ICAKICAgICAvLyBTY3JvbGwgdGhlIGJpdG1hcC4KICAgICBSRUNUIHNjcm9sbFJlY3RXaW4oc2Ny
b2xsVmlld1JlY3QpOwpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgV2ViVmlldzo6dXBkYXRlQmFj
a2luZ1N0b3JlKEZyYW1lVmkKICAgICAgICAgSFduZERDIHdpbmRvd0RDKG1fdmlld1dpbmRvdyk7
CiAgICAgICAgIGJpdG1hcERDT2JqZWN0ID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRp
YmxlREMod2luZG93REMpKTsKICAgICAgICAgYml0bWFwREMgPSBiaXRtYXBEQ09iamVjdC5nZXQo
KTsKLSAgICAgICAgb2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIG1fYmFja2lu
Z1N0b3JlQml0bWFwLT5oYW5kbGUoKSk7CisgICAgICAgIG9sZEJpdG1hcCA9IDo6U2VsZWN0T2Jq
ZWN0KGJpdG1hcERDLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+Z2V0KCkpOwogICAgIH0KIAogICAg
IGlmIChtX2JhY2tpbmdTdG9yZUJpdG1hcCAmJiAobV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbiB8
fCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHkpKSB7CkBAIC0xMDA3LDggKzEwMDcsOCBAQCB2
b2lkIFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShGcmFtZVZpCiAgICAgICAgIFZlY3RvcjxJ
bnRSZWN0PiBwYWludFJlY3RzOwogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZUNvbXBsZXRlbHlE
aXJ0eSAmJiBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uKSB7CiAgICAgICAgICAgICBSRUNUIHJl
Z2lvbkJveDsKLSAgICAgICAgICAgIDo6R2V0UmduQm94KG1fYmFja2luZ1N0b3JlRGlydHlSZWdp
b24tPmhhbmRsZSgpLCAmcmVnaW9uQm94KTsKLSAgICAgICAgICAgIGdldFVwZGF0ZVJlY3RzKG1f
YmFja2luZ1N0b3JlRGlydHlSZWdpb24tPmhhbmRsZSgpLCByZWdpb25Cb3gsIHBhaW50UmVjdHMp
OworICAgICAgICAgICAgOjpHZXRSZ25Cb3gobV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbi0+Z2V0
KCksICZyZWdpb25Cb3gpOworICAgICAgICAgICAgZ2V0VXBkYXRlUmVjdHMobV9iYWNraW5nU3Rv
cmVEaXJ0eVJlZ2lvbi0+Z2V0KCksIHJlZ2lvbkJveCwgcGFpbnRSZWN0cyk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBSRUNUIGNsaWVudFJlY3Q7CiAgICAgICAgICAgICA6OkdldENs
aWVudFJlY3QobV92aWV3V2luZG93LCAmY2xpZW50UmVjdCk7CkBAIC0xMDM4LDEwICsxMDM4LDEw
IEBAIHZvaWQgV2ViVmlldzo6cGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUKIAogICAgIEhXbmRE
QyBoZGNTY3JlZW4obV92aWV3V2luZG93KTsKICAgICBhdXRvIGhkY01lbSA9IGFkb3B0R0RJT2Jq
ZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGhkY1NjcmVlbikpOwotICAgIEhCSVRNQVAgaGJtT2xk
ID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oOjpTZWxlY3RPYmplY3QoaGRjTWVtLmdldCgpLCBtX2Jh
Y2tpbmdTdG9yZUJpdG1hcC0+aGFuZGxlKCkpKTsKKyAgICBIQklUTUFQIGhibU9sZCA9IHN0YXRp
Y19jYXN0PEhCSVRNQVA+KDo6U2VsZWN0T2JqZWN0KGhkY01lbS5nZXQoKSwgbV9iYWNraW5nU3Rv
cmVCaXRtYXAtPmdldCgpKSk7CiAKICAgICBCSVRNQVAgYm1wSW5mbzsKLSAgICA6OkdldE9iamVj
dChtX2JhY2tpbmdTdG9yZUJpdG1hcC0+aGFuZGxlKCksIHNpemVvZihibXBJbmZvKSwgJmJtcElu
Zm8pOworICAgIDo6R2V0T2JqZWN0KG1fYmFja2luZ1N0b3JlQml0bWFwLT5nZXQoKSwgc2l6ZW9m
KGJtcEluZm8pLCAmYm1wSW5mbyk7CiAgICAgU0laRSB3aW5kb3dTaXplID0geyBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQgfTsKIAogICAgIEJMRU5ERlVOQ1RJT04gYmxlbmRGdW5j
dGlvbjsKQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGRjLCBM
UEFSQU0gb3B0aW8KICAgICBtX3BhaW50Q291bnQrKzsKIAogICAgIGF1dG8gYml0bWFwREMgPSBh
ZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhoZGMpKTsKLSAgICBIR0RJT0JKIG9s
ZEJpdG1hcCA9IDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLmdldCgpLCBtX2JhY2tpbmdTdG9yZUJp
dG1hcC0+aGFuZGxlKCkpOworICAgIEhHRElPQkogb2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3Qo
Yml0bWFwREMuZ2V0KCksIG1fYmFja2luZ1N0b3JlQml0bWFwLT5nZXQoKSk7CiAKICAgICAvLyBV
cGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgaWYgbmVlZGVkLgogICAgIHVwZGF0ZUJhY2tpbmdTdG9y
ZShmcmFtZVZpZXcsIGJpdG1hcERDLmdldCgpLCBiYWNraW5nU3RvcmVDb21wbGV0ZWx5RGlydHks
IHdpbmRvd3NUb1BhaW50KTsKQEAgLTU5ODAsNyArNTk4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6YmFja2kKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBp
ZiAoIW1fYmFja2luZ1N0b3JlQml0bWFwKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICpo
Qml0bWFwID0gcmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExFPihtX2JhY2tpbmdTdG9yZUJpdG1h
cC0+aGFuZGxlKCkpOworICAgICpoQml0bWFwID0gcmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExF
PihtX2JhY2tpbmdTdG9yZUJpdG1hcC0+Z2V0KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxNTU0NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZkNvdW50ZWRHRElI
YW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEdESU9iamVjdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3VzcGVuZGFibGVUaW1lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVz
c2FnZUxpc3RlbmVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTcwLDggKzcwLDgg
QEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0
b3JDbGllbnQ7CiAKLXR5cGVkZWYgV2ViQ29yZTo6UmVmQ291bnRlZEdESUhhbmRsZTxIQklUTUFQ
PiBSZWZDb3VudGVkSEJJVE1BUDsKLXR5cGVkZWYgV2ViQ29yZTo6UmVmQ291bnRlZEdESUhhbmRs
ZTxIUkdOPiBSZWZDb3VudGVkSFJHTjsKK3R5cGVkZWYgV2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0
PEhCSVRNQVA+IFJlZkNvdW50ZWRIQklUTUFQOwordHlwZWRlZiBXZWJDb3JlOjpTaGFyZWRHRElP
YmplY3Q8SFJHTj4gUmVmQ291bnRlZEhSR047CiAKIFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdl
Kik7CiBXZWJDb3JlOjpQYWdlKiBjb3JlKElXZWJWaWV3Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211242</attachid>
            <date>2013-09-10 14:23:52 -0700</date>
            <delta_ts>2013-09-10 14:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121037-20130910142346.patch</filename>
            <type>text/plain</type>
            <size>28002</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNTU0NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA5LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBDcmVhdGUgU2hhcmVkR0RJT2Jq
ZWN0IENsYXNzIFRlbXBsYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjEwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOb3cgdGhhdCB0aGUgU2hhcmVkR0RJT2JqZWN0IGNsYXNzIGV4aXN0cyB3ZSBj
YW4gZ2V0IHJpZCBvZgorICAgICAgICB0aGUgV2luZG93cy1zcGVjaWZpYyBjb2RlIGluIE93blB0
ci4KKworICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOiBSZW1vdmUgT3duUHRyV2lu
LmNwcC4KKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOiBEaXR0by4K
KyAgICAgICAgKiB3dGYvT3duUHRyQ29tbW9uLmg6IAorICAgICAgICAoV1RGOjpkZWxldGVPd25l
ZFB0cik6IFJlbW92ZSBXaW5kb3dzIGRlY2xhcmF0aW9ucyB0aGF0CisgICAgICAgIGFyZSBubyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAqIHd0Zi93aW4vR0RJT2JqZWN0Lmg6CisgICAgICAgIChX
VEY6OkdESU9iamVjdDo6Z2V0KTogQ2hhbmdlIHRvICdjb25zdCcgdG8gbWF0Y2gKKyAgICAgICAg
c2lnbmF0dXJlIChhbmQgdXNlIGNhc2VzKSBlbHNld2hlcmUgaW4gdGhlIGNvZGUgYmFzZSBmb3IK
KyAgICAgICAgb3VyIHNtYXJ0IHBvaW50ZXIgY2xhc3Nlcy4KKyAgICAgICAgKiB3dGYvd2luL093
blB0cldpbi5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMDktMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIENoYW5nZSBmcm9tIHVzaW5nIE93
blB0cjxHREkgU3R1ZmY+IHRvIG5ldyBHRElPYmplY3QgdGVtcGxhdGUuCkluZGV4OiBTb3VyY2Uv
V1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2oJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHVuaWNvZGVcaWN1XENvbGxhdG9ySUNVLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdW5pY29kZVxVVEY4LmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcd2luXE1haW5UaHJlYWRXaW4uY3Bw
IiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx3aW5cT3duUHRyV2luLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcV1RGVGhyZWFkRGF0YS5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNjaGVkdWxlUGFpckNGLmNwcCIgLz4N
CiAgIDwvSXRlbUdyb3VwPg0KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzgsOSArNzgsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHdpblxNYWluVGhyZWFkV2luLmNwcCI+DQogICAg
ICAgPEZpbHRlcj53aW48L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cd3RmXHdpblxPd25QdHJXaW4uY3BwIj4NCi0gICAgICA8RmlsdGVyPndp
bjwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcdGhyZWFkc1x3aW5cQmluYXJ5U2VtYXBob3JlV2luLmNwcCI+DQogICAgICAgPEZpbHRl
cj50aHJlYWRzXHdpbjwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Pd25QdHJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Pd25Q
dHJDb21tb24uaAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dURi93dGYvT3duUHRyQ29t
bW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFu
eSAxMDAgSW5jLgogICoKQEAgLTI4LDEyICsyOCw2IEBACiAjaWZuZGVmIFdURl9Pd25QdHJDb21t
b25faAogI2RlZmluZSBXVEZfT3duUHRyQ29tbW9uX2gKIAotI2lmIE9TKFdJTkRPV1MpCi10eXBl
ZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7Ci10eXBlZGVmIHN0cnVjdCBIRENfXyogSERD
OwotdHlwZWRlZiBzdHJ1Y3QgSFJHTl9fKiBIUkdOOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShF
RkwpCiB0eXBlZGVmIHN0cnVjdCBfRWNvcmVfRXZhcyBFY29yZV9FdmFzOwogdHlwZWRlZiBzdHJ1
Y3QgX0Vjb3JlX0lNRl9Db250ZXh0IEVjb3JlX0lNRl9Db250ZXh0OwpAQCAtNTksMTIgKzUzLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBkZWxldGUgcHRyOwogICAgIH0KIAotI2lm
IE9TKFdJTkRPV1MpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIo
SEJJVE1BUCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoSERD
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVPd25lZFB0cihIUkdOKTsKLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oRUZMKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRl
bGV0ZU93bmVkUHRyKEVjb3JlX0V2YXMqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZWxldGVPd25lZFB0cihFY29yZV9JTUZfQ29udGV4dCopOwpJbmRleDogU291cmNlL1dURi93dGYv
d2luL0dESU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3dpbi9HRElPYmpl
Y3QuaAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dURi93dGYvd2luL0dESU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHRElPYmplY3Qo
KSA6IG1fb2JqZWN0KDApIHsgfQogICAgIH5HRElPYmplY3QoKSB7IGRlbGV0ZU9iamVjdDxUPiht
X29iamVjdCk7IH0KIAotICAgIFQgZ2V0KCkgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICBUIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CiAKICAgICB2b2lkIGNsZWFyKCk7CiAgICAg
VCBsZWFrKCkgV0FSTl9VTlVTRURfUkVUVVJOOwpJbmRleDogU291cmNlL1dURi93dGYvd2luL093
blB0cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL093blB0cldpbi5j
cHAJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9Pd25QdHJXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiT3duUHRyLmgiCi0KLSNpZiBPUyhXSU5ET1dTKQotCi0jaW5jbHVkZSA8d2luZG93
cy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBkZWxldGVPd25lZFB0cihIQklUTUFQIHB0
cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBEZWxldGVPYmplY3QocHRyKTsKLX0KLQotdm9p
ZCBkZWxldGVPd25lZFB0cihIREMgcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIERlbGV0
ZURDKHB0cik7Ci19Ci0KLXZvaWQgZGVsZXRlT3duZWRQdHIoSFJHTiBwdHIpCi17Ci0gICAgaWYg
KHB0cikKLSAgICAgICAgRGVsZXRlT2JqZWN0KHB0cik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTQ2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI4IEBACisyMDEzLTA5LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIFtXaW5kb3dzXSBDcmVhdGUgU2hhcmVkR0RJT2JqZWN0IENsYXNzIFRlbXBsYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwMzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IFJlbW92ZSBSZWZDb3VudGVkR0RJSGFuZGxlLmgs
IGFuZAorICAgICAgICBhZGQgbmV3IFNoYXJlZEdESU9iamVjdC5oIGZpbGUuCisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpoZm9udCk6IFN3aXRjaCB0byBuZXcgU2hhcmVkR0RJT2JqZWN0
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OkZvbnRQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUmVmQ291bnRlZEdESUhhbmRsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRHRElPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElP
YmplY3Q6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0OjpTaGFyZWRHRElPYmplY3QpOgorCiAy
MDEzLTA5LTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNdIFBERkRvY3VtZW50SW1hZ2Ugc2hvdWxkIHVzZSBQREZLaXQgdG8gZHJhdwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNTU0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI5OSw2ICsxOTI5OSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2xcR0xQbGF0Zm9ybUNv
bnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW5nbFxHTFBsYXRmb3JtU3VyZmFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcVmlkZW9UcmFja1ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxTaGFyZWRHRElPYmplY3QuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhvc3RXaW5kb3cuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nLmgiIC8+CkBA
IC0xOTQ2Nyw3ICsxOTQ2OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVR5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZVV0aWxpdGllcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5
cGVcT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkR0RJSGFuZGxlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cVW5pc2NyaWJlQ29udHJv
bGxlci5oIiAvPgogICAgIDxDdXN0b21CdWlsZFN0ZXAgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncd2luXFdLQ0FJbWFnZVF1ZXVlLmgiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzA5Nyw2ICs3MDk3LDggQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxTdHJ1Y3R1cmVkRXhjZXB0aW9uSGFu
ZGxlclN1cHByZXNzb3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNCZWZvcmVVbmxvYWRFdmVudC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcRmxvYXRpbmdPYmplY3RzLmNwcCIgLz4KICAgPC9JdGVtR3Jv
dXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyLmgiPgpAQCAtODU4MSw5ICs4NTgzLDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXE9wZW5UeXBl
VmVydGljYWxEYXRhLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkR0RJSGFuZGxlLmgiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxVbmlzY3JpYmVDb250cm9s
bGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTE0ODk3LDYgKzE0ODk2LDExIEBACiAgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVs
ZW1lbnRUeXBlSGVscGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXFNWR0VsZW1lbnRUeXBlSGVscGVycy5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlVW5sb2FkRXZlbnQu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xGbG9hdGluZ09iamVj
dHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
blxTaGFyZWRHRElPYmplY3QuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdp
bjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluIj4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2lu
Y2x1ZGUgIkZvbnRXaWR0aFZhcmlhbnQuaCIKIAogI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRl
ICJSZWZDb3VudGVkR0RJSGFuZGxlLmgiCisjaW5jbHVkZSAiU2hhcmVkR0RJT2JqZWN0LmgiCiAj
ZW5kaWYKIAogI2lmIFVTRShDQUlSTykKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAg
fkZvbnRQbGF0Zm9ybURhdGEoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBIRk9OVCBoZm9u
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9udC0+aGFuZGxlKCkgOiAwOyB9CisgICAg
SEZPTlQgaGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmdldCgpIDogMDsg
fQogICAgIGJvb2wgdXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91c2VHREk7IH0KICNlbGlmIE9T
KERBUldJTikKICAgICBOU0ZvbnQqIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0KQEAg
LTIyOCw3ICsyMjgsNyBAQCBwcml2YXRlOgogI2lmIE9TKERBUldJTikKICAgICBOU0ZvbnQqIG1f
Zm9udDsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICBSZWZQdHI8UmVmQ291bnRlZEdESUhhbmRs
ZTxIRk9OVD4gPiBtX2ZvbnQ7CisgICAgUmVmUHRyPFNoYXJlZEdESU9iamVjdDxIRk9OVD4+IG1f
Zm9udDsKICNlbmRpZgogCiAjaWYgVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dp
bi5jcHAJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgogCisjaW5jbHVkZSAiU2hhcmVkR0RJT2JqZWN0LmgiCiAjaW5jbHVkZSA8QXBwbGljYXRp
b25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC0xMjAsNyArMTIxLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShIRk9OVAogICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQogICAgICwgbV9zaXplKHNp
emUpCiAgICAgLCBtX3dpZHRoVmFyaWFudChSZWd1bGFyV2lkdGgpCi0gICAgLCBtX2ZvbnQoUmVm
Q291bnRlZEdESUhhbmRsZTxIRk9OVD46OmNyZWF0ZShoZm9udCkpCisgICAgLCBtX2ZvbnQoU2hh
cmVkR0RJT2JqZWN0PEhGT05UPjo6Y3JlYXRlKGFkb3B0R0RJT2JqZWN0PEhGT05UPihoZm9udCkp
KQogICAgICwgbV9jZ0ZvbnQoZm9udCkKICAgICAsIG1faXNDb2xvckJpdG1hcEZvbnQoZmFsc2Up
CiAgICAgLCBtX3VzZUdESSh1c2VHREkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJv
V2luLmNwcAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybURhdGFJbml0KAog
fQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UIGZvbnQsIGNhaXJv
X2ZvbnRfZmFjZV90KiBmb250RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlx
dWUpCi0gICAgOiBtX2ZvbnQoUmVmQ291bnRlZEdESUhhbmRsZTxIRk9OVD46OmNyZWF0ZShmb250
KSkKKyAgICA6IG1fZm9udChTaGFyZWRHRElPYmplY3Q8SEZPTlQ+OjpjcmVhdGUoYWRvcHRHRElP
YmplY3Q8SEZPTlQ+KGZvbnQpKSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9vcmllbnRh
dGlvbihIb3Jpem9udGFsKQogICAgICwgbV93aWR0aFZhcmlhbnQoUmVndWxhcldpZHRoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAkocmV2aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIHN0ZDo6bWluOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UIGZvbnQs
IGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVzZUdESSkKLSAgICA6
IG1fZm9udChSZWZDb3VudGVkR0RJSGFuZGxlPEhGT05UPjo6Y3JlYXRlKGZvbnQpKQorICAgIDog
bV9mb250KFNoYXJlZEdESU9iamVjdDxIRk9OVD46OmNyZWF0ZShhZG9wdEdESU9iamVjdDxIRk9O
VD4oZm9udCkpKQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6
b250YWwpCiAgICAgLCBtX3dpZHRoVmFyaWFudChSZWd1bGFyV2lkdGgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291bnRlZEdESUhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9SZWZDb3VudGVk
R0RJSGFuZGxlLmgJKHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9SZWZDb3VudGVkR0RJSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBB
cHBsZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaWZuZGVmIFJlZkNvdW50ZWRHRElIYW5kbGVfaAotI2RlZmluZSBSZWZD
b3VudGVkR0RJSGFuZGxlX2gKLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBSZWZDb3VudGVkR0RJSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVmQ291
bnRlZEdESUhhbmRsZTxUPiA+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZD
b3VudGVkR0RJSGFuZGxlPiBjcmVhdGUoVCBoYW5kbGUpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJlZkNvdW50ZWRHRElIYW5kbGU8VD4oaGFuZGxlKSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmQ291bnRlZEdESUhhbmRsZTxUPiA+IGNyZWF0ZURlbGV0
ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZDb3VudGVkR0RJSGFu
ZGxlPFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8VD4oLTEpKSk7Ci0gICAgfQotCi0gICAgflJlZkNvdW50
ZWRHRElIYW5kbGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1faGFuZGxlICE9IHJlaW50ZXJwcmV0
X2Nhc3Q8VD4oLTEpKQotICAgICAgICAgICAgV1RGOjpkZWxldGVPd25lZFB0cihtX2hhbmRsZSk7
Ci0gICAgfQotCi0gICAgVCBoYW5kbGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
aGFuZGxlOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdURjo6UHRySGFzaDxUPjo6aGFzaChtX2hhbmRsZSk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIFJlZkNvdW50ZWRHRElIYW5kbGUoVCBoYW5kbGUpCi0gICAgICAgIDogbV9oYW5k
bGUoaGFuZGxlKQotICAgIHsKLSAgICB9Ci0KLSAgICBUIG1faGFuZGxlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVmQ291bnRlZEdESUhhbmRsZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJl
ZEdESU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBTaGFyZWRHRElPYmplY3RfaAorI2RlZmluZSBTaGFyZWRHRElPYmplY3RfaAorCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNoYXJlZEdESU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlZEdESU9iamVjdDxUPj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXJlZEdESU9iamVjdD4gY3JlYXRlKEdESU9iamVjdDxUPiBvYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEdESU9iamVjdDxUPihzdGQ6Om1vdmUob2JqZWN0
KSkpOworICAgIH0KKworICAgIFQgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X29iamVjdC5nZXQoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8VD46Omhhc2gobV9vYmplY3QuZ2V0KCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFyZWRHRElPYmplY3QoR0RJT2JqZWN0PFQ+IG9iamVj
dCkKKyAgICAgICAgOiBtX29iamVjdChzdGQ6Om1vdmUob2JqZWN0KSkKKyAgICB7CisgICAgfQor
CisgICAgR0RJT2JqZWN0PFQ+IG1fb2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gU2hhcmVkR0RJT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA5LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBDcmVhdGUgU2hhcmVkR0RJT2JqZWN0
IENsYXNzIFRlbXBsYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjEwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcuY3BwOiBDaGFuZ2UgaW1wbGVtZW50YXRpb25zIHRvIHVzZSB0aGUg
bmV3IFNoYXJlZEdESU9iamVjdAorICAgICAgICBjbGFzcy4KKyAgICAgICAgKFdlYlZpZXc6OmFk
ZFRvRGlydHlSZWdpb24pOgorICAgICAgICAoV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJWaWV3
OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0ZSk6CisgICAgICAgIChXZWJWaWV3OjpwYWludCk6
CisgICAgICAgIChXZWJWaWV3OjpiYWNraW5nU3RvcmUpOgorICAgICAgICAqIFdlYlZpZXcuaDog
RGl0dG8uCisKIDIwMTMtMDktMDkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbmRvd3NdIENoYW5nZSBmcm9tIHVzaW5nIE93blB0cjxHREkgU3R1ZmY+
IHRvIG5ldyBHRElPYmplY3QgdGVtcGxhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2
aXNpb24gMTU1NDU0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyMyw3ICs4MjMsNyBAQCBib29sIFdlYlZpZXc6OmVuc3VyZUJhY2tpbmdTdG9y
ZSgpCiAgICAgICAgIEJpdG1hcEluZm8gYml0bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJv
dHRvbVVwKEludFNpemUobV9iYWNraW5nU3RvcmVTaXplKSk7CiAKICAgICAgICAgdm9pZCogcGl4
ZWxzID0gTlVMTDsKLSAgICAgICAgbV9iYWNraW5nU3RvcmVCaXRtYXAgPSBSZWZDb3VudGVkSEJJ
VE1BUDo6Y3JlYXRlKDo6Q3JlYXRlRElCU2VjdGlvbigwLCAmYml0bWFwSW5mbywgRElCX1JHQl9D
T0xPUlMsICZwaXhlbHMsIDAsIDApKTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmVCaXRtYXAgPSBT
aGFyZWRHRElPYmplY3Q8SEJJVE1BUD46OmNyZWF0ZShhZG9wdEdESU9iamVjdCg6OkNyZWF0ZURJ
QlNlY3Rpb24oMCwgJmJpdG1hcEluZm8sIERJQl9SR0JfQ09MT1JTLCAmcGl4ZWxzLCAwLCAwKSkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTg0MywxMiArODQzLDEyIEBAIHZv
aWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnQKICAgICB9CiAjZW5kaWYKIAot
ICAgIEhSR04gbmV3UmVnaW9uID0gOjpDcmVhdGVSZWN0UmduKGRpcnR5UmVjdC54KCksIGRpcnR5
UmVjdC55KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0
Lm1heFgoKSwgZGlydHlSZWN0Lm1heFkoKSk7Ci0gICAgYWRkVG9EaXJ0eVJlZ2lvbihuZXdSZWdp
b24pOworICAgIGF1dG8gbmV3UmVnaW9uID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVSZWN0Umdu
KGRpcnR5UmVjdC54KCksIGRpcnR5UmVjdC55KCksCisgICAgICAgIGRpcnR5UmVjdC5tYXhYKCks
IGRpcnR5UmVjdC5tYXhZKCkpKTsKKyAgICBhZGRUb0RpcnR5UmVnaW9uKHN0ZDo6bW92ZShuZXdS
ZWdpb24pKTsKIH0KIAotdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKEhSR04gbmV3UmVn
aW9uKQordm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKEdESU9iamVjdDxIUkdOPiBuZXdS
ZWdpb24pCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIEFTU0VSVCgh
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwpAQCAtODU3LDEyICs4NTcsMTEgQEAgdm9pZCBX
ZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKEhSR04gbmV3UgogICAgIExPQ0FMX0dESV9DT1VOVEVS
KDAsIF9fRlVOQ1RJT05fXyk7CiAKICAgICBpZiAobV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbikg
ewotICAgICAgICBIUkdOIGNvbWJpbmVkUmVnaW9uID0gOjpDcmVhdGVSZWN0UmduKDAsMCwwLDAp
OwotICAgICAgICA6OkNvbWJpbmVSZ24oY29tYmluZWRSZWdpb24sIG1fYmFja2luZ1N0b3JlRGly
dHlSZWdpb24tPmhhbmRsZSgpLCBuZXdSZWdpb24sIFJHTl9PUik7Ci0gICAgICAgIDo6RGVsZXRl
T2JqZWN0KG5ld1JlZ2lvbik7Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb24gPSBS
ZWZDb3VudGVkSFJHTjo6Y3JlYXRlKGNvbWJpbmVkUmVnaW9uKTsKKyAgICAgICAgYXV0byBjb21i
aW5lZFJlZ2lvbiA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlUmVjdFJnbigwLCAwLCAwLCAwKSk7
CisgICAgICAgIDo6Q29tYmluZVJnbihjb21iaW5lZFJlZ2lvbi5nZXQoKSwgbV9iYWNraW5nU3Rv
cmVEaXJ0eVJlZ2lvbi0+Z2V0KCksIG5ld1JlZ2lvbi5nZXQoKSwgUkdOX09SKTsKKyAgICAgICAg
bV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbiA9IFNoYXJlZEdESU9iamVjdDxIUkdOPjo6Y3JlYXRl
KHN0ZDo6bW92ZShjb21iaW5lZFJlZ2lvbikpOwogICAgIH0gZWxzZQotICAgICAgICBtX2JhY2tp
bmdTdG9yZURpcnR5UmVnaW9uID0gUmVmQ291bnRlZEhSR046OmNyZWF0ZShuZXdSZWdpb24pOwor
ICAgICAgICBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uID0gU2hhcmVkR0RJT2JqZWN0PEhSR04+
OjpjcmVhdGUoc3RkOjptb3ZlKG5ld1JlZ2lvbikpOwogCiAgICAgaWYgKG1fdWlEZWxlZ2F0ZVBy
aXZhdGUpCiAgICAgICAgIG1fdWlEZWxlZ2F0ZVByaXZhdGUtPndlYlZpZXdEaWRJbnZhbGlkYXRl
KHRoaXMpOwpAQCAtODkwLDI1ICs4ODksMjUgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5n
U3RvcmUoRnJhbWVWaQogICAgIH0KIAogICAgIC8vIE1ha2UgYSByZWdpb24gdG8gaG9sZCB0aGUg
aW52YWxpZGF0ZWQgc2Nyb2xsIGFyZWEuCi0gICAgSFJHTiB1cGRhdGVSZWdpb24gPSA6OkNyZWF0
ZVJlY3RSZ24oMCwgMCwgMCwgMCk7CisgICAgYXV0byB1cGRhdGVSZWdpb24gPSBhZG9wdEdESU9i
amVjdCg6OkNyZWF0ZVJlY3RSZ24oMCwgMCwgMCwgMCkpOwogCiAgICAgLy8gQ29sbGVjdCBvdXIg
ZGV2aWNlIGNvbnRleHQgaW5mbyBhbmQgc2VsZWN0IHRoZSBiaXRtYXAgdG8gc2Nyb2xsLgogICAg
IEhXbmREQyB3aW5kb3dEQyhtX3ZpZXdXaW5kb3cpOwogICAgIGF1dG8gYml0bWFwREMgPSBhZG9w
dEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOwotICAgIEhHRElPQkog
b2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIG1fYmFja2luZ1N0b3Jl
Qml0bWFwLT5oYW5kbGUoKSk7CisgICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVj
dChiaXRtYXBEQy5nZXQoKSwgbV9iYWNraW5nU3RvcmVCaXRtYXAtPmdldCgpKTsKICAgICAKICAg
ICAvLyBTY3JvbGwgdGhlIGJpdG1hcC4KICAgICBSRUNUIHNjcm9sbFJlY3RXaW4oc2Nyb2xsVmll
d1JlY3QpOwogICAgIFJFQ1QgY2xpcFJlY3RXaW4oY2xpcFJlY3QpOwotICAgIDo6U2Nyb2xsREMo
Yml0bWFwREMuZ2V0KCksIGR4LCBkeSwgJnNjcm9sbFJlY3RXaW4sICZjbGlwUmVjdFdpbiwgdXBk
YXRlUmVnaW9uLCAwKTsKKyAgICA6OlNjcm9sbERDKGJpdG1hcERDLmdldCgpLCBkeCwgZHksICZz
Y3JvbGxSZWN0V2luLCAmY2xpcFJlY3RXaW4sIHVwZGF0ZVJlZ2lvbi5nZXQoKSwgMCk7CiAgICAg
UkVDVCByZWdpb25Cb3g7Ci0gICAgOjpHZXRSZ25Cb3godXBkYXRlUmVnaW9uLCAmcmVnaW9uQm94
KTsKKyAgICA6OkdldFJnbkJveCh1cGRhdGVSZWdpb24uZ2V0KCksICZyZWdpb25Cb3gpOwogCiAg
ICAgLy8gRmx1c2guCiAgICAgR2RpRmx1c2goKTsKIAogICAgIC8vIEFkZCB0aGUgZGlydHkgcmVn
aW9uIHRvIHRoZSBiYWNraW5nIHN0b3JlJ3MgZGlydHkgcmVnaW9uLgotICAgIGFkZFRvRGlydHlS
ZWdpb24odXBkYXRlUmVnaW9uKTsKKyAgICBhZGRUb0RpcnR5UmVnaW9uKHN0ZDo6bW92ZSh1cGRh
dGVSZWdpb24pKTsKIAogICAgIGlmIChtX3VpRGVsZWdhdGVQcml2YXRlKQogICAgICAgICBtX3Vp
RGVsZWdhdGVQcml2YXRlLT53ZWJWaWV3U2Nyb2xsZWQodGhpcyk7CkBAIC05OTUsNyArOTk0LDcg
QEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUoRnJhbWVWaQogICAgICAgICBIV25k
REMgd2luZG93REMobV92aWV3V2luZG93KTsKICAgICAgICAgYml0bWFwRENPYmplY3QgPSBhZG9w
dEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOwogICAgICAgICBiaXRt
YXBEQyA9IGJpdG1hcERDT2JqZWN0LmdldCgpOwotICAgICAgICBvbGRCaXRtYXAgPSA6OlNlbGVj
dE9iamVjdChiaXRtYXBEQywgbV9iYWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgpKTsKKyAgICAg
ICAgb2xkQml0bWFwID0gOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIG1fYmFja2luZ1N0b3JlQml0
bWFwLT5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlQml0bWFwICYmICht
X2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uIHx8IGJhY2tpbmdTdG9yZUNvbXBsZXRlbHlEaXJ0eSkp
IHsKQEAgLTEwMDcsOCArMTAwNiw4IEBAIHZvaWQgV2ViVmlldzo6dXBkYXRlQmFja2luZ1N0b3Jl
KEZyYW1lVmkKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IHBhaW50UmVjdHM7CiAgICAgICAgIGlm
ICghYmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5ICYmIG1fYmFja2luZ1N0b3JlRGlydHlSZWdp
b24pIHsKICAgICAgICAgICAgIFJFQ1QgcmVnaW9uQm94OwotICAgICAgICAgICAgOjpHZXRSZ25C
b3gobV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbi0+aGFuZGxlKCksICZyZWdpb25Cb3gpOwotICAg
ICAgICAgICAgZ2V0VXBkYXRlUmVjdHMobV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbi0+aGFuZGxl
KCksIHJlZ2lvbkJveCwgcGFpbnRSZWN0cyk7CisgICAgICAgICAgICA6OkdldFJnbkJveChtX2Jh
Y2tpbmdTdG9yZURpcnR5UmVnaW9uLT5nZXQoKSwgJnJlZ2lvbkJveCk7CisgICAgICAgICAgICBn
ZXRVcGRhdGVSZWN0cyhtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uLT5nZXQoKSwgcmVnaW9uQm94
LCBwYWludFJlY3RzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJFQ1QgY2xpZW50
UmVjdDsKICAgICAgICAgICAgIDo6R2V0Q2xpZW50UmVjdChtX3ZpZXdXaW5kb3csICZjbGllbnRS
ZWN0KTsKQEAgLTEwMzgsMTAgKzEwMzcsMTAgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJl
ZFdpbmRvd1VwZGF0ZQogCiAgICAgSFduZERDIGhkY1NjcmVlbihtX3ZpZXdXaW5kb3cpOwogICAg
IGF1dG8gaGRjTWVtID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoaGRjU2Ny
ZWVuKSk7Ci0gICAgSEJJVE1BUCBoYm1PbGQgPSBzdGF0aWNfY2FzdDxIQklUTUFQPig6OlNlbGVj
dE9iamVjdChoZGNNZW0uZ2V0KCksIG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSkpOwor
ICAgIEhCSVRNQVAgaGJtT2xkID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oOjpTZWxlY3RPYmplY3Qo
aGRjTWVtLmdldCgpLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+Z2V0KCkpKTsKIAogICAgIEJJVE1B
UCBibXBJbmZvOwotICAgIDo6R2V0T2JqZWN0KG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUo
KSwgc2l6ZW9mKGJtcEluZm8pLCAmYm1wSW5mbyk7CisgICAgOjpHZXRPYmplY3QobV9iYWNraW5n
U3RvcmVCaXRtYXAtPmdldCgpLCBzaXplb2YoYm1wSW5mbyksICZibXBJbmZvKTsKICAgICBTSVpF
IHdpbmRvd1NpemUgPSB7IGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCB9OwogCiAg
ICAgQkxFTkRGVU5DVElPTiBibGVuZEZ1bmN0aW9uOwpAQCAtMTA4MCwxMiArMTA3OSwxMiBAQCB2
b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBkYywgTFBBUkFNIG9wdGlvCiAKICAgICBSRUNUIHJjUGFp
bnQ7CiAgICAgSERDIGhkYzsKLSAgICBPd25QdHI8SFJHTj4gcmVnaW9uOworICAgIEdESU9iamVj
dDxIUkdOPiByZWdpb247CiAgICAgaW50IHJlZ2lvblR5cGUgPSBOVUxMUkVHSU9OOwogICAgIFBB
SU5UU1RSVUNUIHBzOwogICAgIFdpbmRvd3NUb1BhaW50IHdpbmRvd3NUb1BhaW50OwogICAgIGlm
ICghZGMpIHsKLSAgICAgICAgcmVnaW9uID0gYWRvcHRQdHIoQ3JlYXRlUmVjdFJnbigwLDAsMCww
KSk7CisgICAgICAgIHJlZ2lvbiA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlUmVjdFJnbigwLCAw
LCAwLCAwKSk7CiAgICAgICAgIHJlZ2lvblR5cGUgPSBHZXRVcGRhdGVSZ24obV92aWV3V2luZG93
LCByZWdpb24uZ2V0KCksIGZhbHNlKTsKICAgICAgICAgaGRjID0gQmVnaW5QYWludChtX3ZpZXdX
aW5kb3csICZwcyk7CiAgICAgICAgIHJjUGFpbnQgPSBwcy5yY1BhaW50OwpAQCAtMTExMiw3ICsx
MTExLDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpbwogICAgIG1f
cGFpbnRDb3VudCsrOwogCiAgICAgYXV0byBiaXRtYXBEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3Jl
YXRlQ29tcGF0aWJsZURDKGhkYykpOwotICAgIEhHRElPQkogb2xkQml0bWFwID0gOjpTZWxlY3RP
YmplY3QoYml0bWFwREMuZ2V0KCksIG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSk7Cisg
ICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVjdChiaXRtYXBEQy5nZXQoKSwgbV9i
YWNraW5nU3RvcmVCaXRtYXAtPmdldCgpKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgYmFja2luZyBz
dG9yZSBpZiBuZWVkZWQuCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKGZyYW1lVmlldywgYml0bWFw
REMuZ2V0KCksIGJhY2tpbmdTdG9yZUNvbXBsZXRlbHlEaXJ0eSwgd2luZG93c1RvUGFpbnQpOwpA
QCAtNTk4MCw3ICs1OTc5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpi
YWNraQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9iYWNraW5nU3RvcmVC
aXRtYXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgKmhCaXRtYXAgPSByZWludGVycHJl
dF9jYXN0PE9MRV9IQU5ETEU+KG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSk7CisgICAg
KmhCaXRtYXAgPSByZWludGVycHJldF9jYXN0PE9MRV9IQU5ETEU+KG1fYmFja2luZ1N0b3JlQml0
bWFwLT5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJ
KHJldmlzaW9uIDE1NTQ1NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVj
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVmQ291bnRlZEdESUhhbmRsZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkR0RJT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdXNwZW5kYWJs
ZVRpbWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNzAsOSArNzAsNiBAQCBjbGFzcyBXZWJGcmFtZTsK
IGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKIAotdHlwZWRl
ZiBXZWJDb3JlOjpSZWZDb3VudGVkR0RJSGFuZGxlPEhCSVRNQVA+IFJlZkNvdW50ZWRIQklUTUFQ
OwotdHlwZWRlZiBXZWJDb3JlOjpSZWZDb3VudGVkR0RJSGFuZGxlPEhSR04+IFJlZkNvdW50ZWRI
UkdOOwotCiBXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSopOwogV2ViQ29yZTo6UGFnZSogY29y
ZShJV2ViVmlldyopOwogCkBAIC04ODAsNyArODc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFp
bnRJbnRvV2luZG93KEhEQyBiaXRtYXBEQywgSERDIHdpbmRvd0RDLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIGJvb2wgZW5zdXJlQmFja2luZ1N0b3JlKCk7CiAgICAg
dm9pZCBhZGRUb0RpcnR5UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2b2lk
IGFkZFRvRGlydHlSZWdpb24oSFJHTik7CisgICAgdm9pZCBhZGRUb0RpcnR5UmVnaW9uKEdESU9i
amVjdDxIUkdOPik7CiAgICAgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoV2ViQ29yZTo6RnJhbWVW
aWV3KiwgaW50IGR4LCBpbnQgZHksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFZpZXdS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdm9pZCBkZWxldGVC
YWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHJlcGFpbnQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UsIGJvb2wgcmVwYWlu
dENvbnRlbnRPbmx5ID0gZmFsc2UpOwpAQCAtMTA4Niw5ICsxMDgzLDkgQEAgcHJvdGVjdGVkOgog
ICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKICAgICAKLSAgICBSZWZQdHI8UmVmQ291bnRlZEhCSVRNQVA+IG1fYmFj
a2luZ1N0b3JlQml0bWFwOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q8SEJJ
VE1BUD4+IG1fYmFja2luZ1N0b3JlQml0bWFwOwogICAgIFNJWkUgbV9iYWNraW5nU3RvcmVTaXpl
OwotICAgIFJlZlB0cjxSZWZDb3VudGVkSFJHTj4gbV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbjsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0PEhSR04+PiBtX2JhY2tpbmdTdG9y
ZURpcnR5UmVnaW9uOwogCiAgICAgQ09NUHRyPElBY2Nlc3NpYmlsaXR5RGVsZWdhdGU+IG1fYWNj
ZXNzaWJpbGl0eURlbGVnYXRlOwogICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBtX2Vk
aXRpbmdEZWxlZ2F0ZTsK
</data>
<flag name="review"
          id="233300"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>