<?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>231414</bug_id>
          
          <creation_ts>2021-10-07 23:34:12 -0700</creation_ts>
          <short_desc>[GPU Process] Unique RenderingResourceIdentifiers Part 9: Finish migrating RemoteResourceCache to QualifiedRenderingResourceIdentifier</short_desc>
          <delta_ts>2021-10-12 15:42:35 -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>Layout and Rendering</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>
          
          <blocked>217638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801941</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 23:34:12 -0700</bug_when>
    <thetext>Finish migrating RemoteResourceCache to QualifiedRenderingResourceIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801942</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 23:34:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/84015584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801943</commentid>
    <comment_count>2</comment_count>
      <attachid>440576</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 23:39:29 -0700</bug_when>
    <thetext>Created attachment 440576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802145</commentid>
    <comment_count>3</comment_count>
      <attachid>440640</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-08 10:29:25 -0700</bug_when>
    <thetext>Created attachment 440640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802965</commentid>
    <comment_count>4</comment_count>
      <attachid>440884</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 21:33:41 -0700</bug_when>
    <thetext>Created attachment 440884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803031</commentid>
    <comment_count>5</comment_count>
      <attachid>440909</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 01:44:44 -0700</bug_when>
    <thetext>Created attachment 440909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803282</commentid>
    <comment_count>6</comment_count>
      <attachid>440909</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-12 11:57:46 -0700</bug_when>
    <thetext>Comment on attachment 440909
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:47
&gt; +class ResourceHeapImpl : public ResourceHeap {

This name does not reveal the difference between ResourceHeapImpl and QualifiedResourceHeap. Can&apos;t it be named LocalResourceHeap or RenderingResourceHeap or something else?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:51
&gt; +        m_resources.add(renderingResourceIdentifier, RefPtr&lt;ImageBuffer&gt;(WTFMove(imageBuffer)));

Why do we need to&quot;add()&quot; a RefPtr&lt;&gt; even though the input is a Ref&lt;&gt;? Also I think RefPtr&lt;ImageBuffer&gt;(WTFMove(imageBuffer)) can be just WTFMove(imageBuffer).

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:96
&gt;      using Resource = Variant&lt;RefPtr&lt;ImageBuffer&gt;, RefPtr&lt;NativeImage&gt;, RefPtr&lt;Font&gt;&gt;;

I think this should be a Variant of Ref&lt;&gt; resources since we never add a null pointer to it.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:49
&gt; +        add&lt;WebCore::ImageBuffer&gt;(renderingResourceIdentifier, WTFMove(imageBuffer), m_imageBufferCount);

Do we need to use explicit template specialization here? Can&apos;t it be implicit 

    add(renderingResourceIdentifier, WTFMove(imageBuffer), m_imageBufferCount);

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:109
&gt; +        return remove&lt;WebCore::ImageBuffer&gt;(renderingResourceIdentifier, m_imageBufferCount);

Do we need to make an early return here:

    if (!m_imageBufferCount)
        return false;

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:124
&gt; +        m_resources.removeIf([] (const auto&amp; resource) {

Do we need to make an early return here:

    if (!m_fontCount)
        return;

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:136
&gt; +            ++counter;

Maybe we need to assert here

    ASSERT(m_resources.size() == m_imageBufferCount + m_nativeImageCount + m_fontCount);

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:146
&gt; +        if (!WTF::holds_alternative&lt;RefPtr&lt;T&gt;&gt;(iterator-&gt;value))
&gt; +            return nullptr;

I think we should ASSERT(WTF::holds_alternative...) since it should be a bug in our code to get an Image with the ResourceIdentifier of a font for example.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:153
&gt; +        auto iterator = m_resources.find(renderingResourceIdentifier);

Maybe we need to assert here

    ASSERT(counter);

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:157
&gt; +        if (!WTF::holds_alternative&lt;RefPtr&lt;T&gt;&gt;(iterator-&gt;value))
&gt; +            return false;

I think we should ASSERT(WTF::holds_alternative...) since it should be a bug in our code to remove an Image with the ResourceIdentifier of a font for example.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:164
&gt; +    using Resource = Variant&lt;RefPtr&lt;WebCore::ImageBuffer&gt;, RefPtr&lt;WebCore::NativeImage&gt;, RefPtr&lt;WebCore::Font&gt;&gt;;

I think this should be a Variant of Ref&lt;&gt; resources since we never add a null pointer to it.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:169
&gt; +    HashMap&lt;QualifiedRenderingResourceIdentifier, Resource&gt; m_resources;
&gt; +    WebCore::ProcessIdentifier m_webProcessIdentifier;
&gt; +    unsigned m_imageBufferCount { 0 };
&gt; +    unsigned m_nativeImageCount { 0 };
&gt; +    unsigned m_fontCount { 0 };

What is the benefit of having a HashMap of the variant and three counters over having three HashMaps one for each resource type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803310</commentid>
    <comment_count>7</comment_count>
      <attachid>440909</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 12:32:18 -0700</bug_when>
    <thetext>Comment on attachment 440909
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:96
&gt;&gt;      using Resource = Variant&lt;RefPtr&lt;ImageBuffer&gt;, RefPtr&lt;NativeImage&gt;, RefPtr&lt;Font&gt;&gt;;
&gt; 
&gt; I think this should be a Variant of Ref&lt;&gt; resources since we never add a null pointer to it.

Yep! Alex just taught me how to do this. Very cool.

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:109
&gt;&gt; +        return remove&lt;WebCore::ImageBuffer&gt;(renderingResourceIdentifier, m_imageBufferCount);
&gt; 
&gt; Do we need to make an early return here:
&gt; 
&gt;     if (!m_imageBufferCount)
&gt;         return false;

Good idea. I should probably put it in remove&lt;&gt;() though, so it&apos;s shared.

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:136
&gt;&gt; +            ++counter;
&gt; 
&gt; Maybe we need to assert here
&gt; 
&gt;     ASSERT(m_resources.size() == m_imageBufferCount + m_nativeImageCount + m_fontCount);

Yeah, this is a good idea since it&apos;s an invariant. I&apos;ll put this in a helper and call the helper in a bunch of different places.

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:157
&gt;&gt; +            return false;
&gt; 
&gt; I think we should ASSERT(WTF::holds_alternative...) since it should be a bug in our code to remove an Image with the ResourceIdentifier of a font for example.

I thought so too, but in this specific case it&apos;s actually not:

bool RemoteResourceCache::maybeRemoveResource(...)
{
    ...
    if (m_resourceHeap.removeImageBuffer(renderingResourceIdentifier)
        || m_resourceHeap.removeNativeImage(renderingResourceIdentifier)) {
        updateHasActiveDrawables();
        return true;
    }
    if (m_resourceHeap.removeFont(renderingResourceIdentifier))
        return true;
   ...
}

add() and get() should ASSERT() though.

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:169
&gt;&gt; +    unsigned m_fontCount { 0 };
&gt; 
&gt; What is the benefit of having a HashMap of the variant and three counters over having three HashMaps one for each resource type?

https://bugs.webkit.org/show_bug.cgi?id=231411#c7

Three reasons:
1. Less wasted space in the maps
2. It&apos;s a bug if differently typed resources shared the same RRI
3. Simon says &quot;it’s semantically better&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803376</commentid>
    <comment_count>8</comment_count>
      <attachid>440980</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 14:18:11 -0700</bug_when>
    <thetext>Created attachment 440980
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803401</commentid>
    <comment_count>9</comment_count>
      <attachid>440985</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 14:36:06 -0700</bug_when>
    <thetext>Created attachment 440985
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803444</commentid>
    <comment_count>10</comment_count>
      <attachid>440992</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 15:05:43 -0700</bug_when>
    <thetext>Created attachment 440992
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803486</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-12 15:42:35 -0700</bug_when>
    <thetext>Committed r284048 (242877@main): &lt;https://commits.webkit.org/242877@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440576</attachid>
            <date>2021-10-07 23:39:29 -0700</date>
            <delta_ts>2021-10-08 10:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22968</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDZmYTAwYmFhODMzMzAyOTFjMmQzNmZmOWI1YzAzMjkzMWRkOTU2MjIKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgT2N0IDcg
MjM6Mzg6NDcgMjAyMSAtMDcwMAoKICAgIFBhcnQgNwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NjBmZTAxYmUx
NmEuLmU4MjIxYTNkOTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTA3
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDc6IEZp
bmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0
ZSBhIGJ1bmNoIG9mIHRoZSBtZXRob2RzIG9mIENvbmNyZXRlUmVzb3VyY2VIZWFwIGJlY2F1c2Ug
dGhleSBhcmUgb25seSB1c2VkIGluIHRoZQorICAgICAgICBHUFUgUHJvY2Vzcy1zcGVjaWZpYyBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXNvdXJjZUhlYXA6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJ
bWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVz
b3VyY2VIZWFwOjpnZXRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc0ltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc05hdGl2ZUlt
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNv
dXJjZUhlYXA6Omhhc0ZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlTmF0aXZlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6cmVtb3ZlRm9udCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVzb3VyY2VIZWFwOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwOjpkZWxldGVBbGxGb250cyk6IERlbGV0ZWQuCisKIDIwMjEtMTAt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjog
Q29uc29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aAppbmRleCBmMjQ1ZDBiNTExM2UuLmJjMWZkODczYWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
RHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAotICAgIFJlc291cmNlSGVh
cCBtX3Jlc291cmNlSGVhcDsKKyAgICBDb25jcmV0ZVJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVh
cDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29s
IG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3Vy
Y2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAppbmRleCBkYjZkZmM3NzU5ZGIuLjNhMzgzMjQxMWNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKQEAgLTM2
LDYgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKIGNsYXNzIFJlc291cmNlSGVhcCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVzb3VyY2VI
ZWFwKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZm
ZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOworfTsKKworY2xh
c3MgQ29uY3JldGVSZXNvdXJjZUhlYXAgOiBwdWJsaWMgUmVzb3VyY2VIZWFwIHsKIHB1YmxpYzoK
ICAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiAgICAgewpAQCAt
NTIsNTEgKzYxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZl
ciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZSog
Z2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBGb250KiBnZXRGb250KFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNv
bnN0CisgICAgRm9udCogZ2V0Rm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fZm9udHMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0g
ICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1f
aW1hZ2VCdWZmZXJzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBib29sIGhhc05hdGl2ZUltYWdl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0eSgp
OwotICAgIH0KLQotICAgIGJvb2wgaGFzRm9udCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gIW1fZm9udHMuaXNFbXB0eSgpOwotICAgIH0KLQotICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZm
ZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgYm9vbCByZW1vdmVGb250KFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9mb250cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKLSAgICB9Ci0KICAgICB2b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIG1faW1hZ2VCdWZm
ZXJzLmNsZWFyKCk7CkBAIC0xMDQsMTEgKzgzLDYgQEAgcHVibGljOgogICAgICAgICBtX2ZvbnRz
LmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9pZCBkZWxldGVBbGxGb250cygpCi0gICAgewotICAg
ICAgICBtX2ZvbnRzLmNsZWFyKCk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZmZXI+PiBtX2ltYWdlQnVmZmVy
czsKICAgICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUlt
YWdlPj4gbV9uYXRpdmVJbWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMWMxNTgyMmU3Zi4uNzA2YmEzODQ1
NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlx
dWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDc6IEZpbmlzaCBtaWdyYXRpbmcg
UmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQx
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgRGlzcGxheUxpc3Q6OlJlc291
cmNlSGVhcCBleGlzdHMsIHdlIGNhbiBtYWtlIGEgUmVzb3VyY2VIZWFwIHN1YmNsYXNzIHNwZWNp
ZmljYWxseSBmb3IKKyAgICAgICAgdGhlIEdQVSBwcm9jZXNzLiBUaGUgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBjbGFzcyBob2xkcyBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJz
CisgICAgICAgIGluc3RlYWQgb2YgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6UXVhbGlmaWVkUmVzb3Vy
Y2VIZWFwKToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjphZGQpOgor
ICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJ
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0
Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFz
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhl
YXA6Omhhc05hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVz
b3VyY2VIZWFwOjpoYXNGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVz
b3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmll
ZFJlc291cmNlSGVhcDo6cmVtb3ZlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdWFs
aWZpZWRSZXNvdXJjZUhlYXA6OnJlbW92ZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZp
ZWRSZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTEwLTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNvbGlk
YXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMyYTc4MGM0ZjNjNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJj
ZUhlYXAuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KworI2luY2x1ZGUgIlF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZvbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgUXVhbGlmaWVkUmVzb3VyY2VIZWFwIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXNvdXJjZUhlYXAgeworcHVibGljOgorICAgIFF1YWxpZmllZFJlc291cmNlSGVhcChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIpCisgICAgeworICAgICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
ICAgIG1faW1hZ2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBBU1NFUlQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNz
SWRlbnRpZmllcik7CisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLmFkZChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBSZWY8V2ViQ29yZTo6Rm9udD4mJiBmb250KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIpOworICAgICAgICBtX2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOworICAgIH0KKworICAgIFdlYkNvcmU6OkltYWdlQnVm
ZmVyKiBnZXRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldCh7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJ
bWFnZSogZ2V0TmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQoeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAgfQorCisgICAgV2ViQ29yZTo6Rm9udCog
Z2V0Rm9udChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9u
dHMuZ2V0KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyIH0pOworICAgIH0KKworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZl
cihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdl
dChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIFdlYkNvcmU6OkZvbnQqIGdldEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIH0KKworICAgIGJvb2wgaGFzSW1hZ2VCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFtX2ltYWdlQnVmZmVycy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCBo
YXNOYXRpdmVJbWFnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fbmF0aXZlSW1h
Z2VzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICFtX2ZvbnRzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBib29sIHJl
bW92ZUltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1
ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
Ym9vbCByZW1vdmVOYXRpdmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
KworICAgIGJvb2wgcmVtb3ZlRm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Zm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAg
dm9pZCBkZWxldGVBbGxGb250cygpCisgICAgeworICAgICAgICBtX2ZvbnRzLmNsZWFyKCk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgSGFzaE1hcDxRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+IG1faW1hZ2VCdWZmZXJzOworICAg
IEhhc2hNYXA8UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2U+PiBtX25hdGl2ZUltYWdlczsKKyAgICBIYXNoTWFwPFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkZvbnQ+PiBtX2ZvbnRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmlu
ZGV4IGVlYmFmZjcwZDk3ZS4uYWY5ZTQyODY5YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0z
MiwxMyArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShQcm9jZXNzSWRl
bnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKLSAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX3Jlc291cmNlSGVhcCh3ZWJQcm9jZXNz
SWRlbnRpZmllcikKIHsKIH0KIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VD
YWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYgb3RoZXIpCi0gICAgOiBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKG90aGVyLm1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgLCBtX3Jlc291cmNlSGVh
cChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkKKyAgICA6IG1fcmVzb3VyY2VIZWFwKFdU
Rk1vdmUob3RoZXIubV9yZXNvdXJjZUhlYXApKQogICAgICwgbV9yZXNvdXJjZVVzZUNvdW50ZXJz
KFdURk1vdmUob3RoZXIubV9yZXNvdXJjZVVzZUNvdW50ZXJzKSkKIHsKICAgICB1cGRhdGVIYXNB
Y3RpdmVEcmF3YWJsZXMoKTsKQEAgLTQ3LDggKzQ2LDcgQEAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYgb3RoZXIpCiB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPEltYWdlQnVmZmVyPiYmIGlt
YWdlQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpKTsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVu
dGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZUhlYXAu
YWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1
ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMo
KTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwpAQCAtNTYsMTUgKzU0LDEzIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2Fj
aGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIFF1YWxpCiAKIElt
YWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vz
c0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbV9y
ZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9i
amVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGltYWdlLT5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
b2JqZWN0KCksIFdURk1vdmUoaW1hZ2UpKTsKKyAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CiAgICAgdXBkYXRlSGFzQWN0
aXZlRHJhd2FibGVzKCk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTcyLDIyICs2OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBRdWFs
aWZpZWRSZQogCiBOYXRpdmVJbWFnZSogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZl
SW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0g
ICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2
ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBmb250LT5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIp
OwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCksIFdURk1vdmUoZm9udCkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VV
c2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIEZvbnQqIFJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0
KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3Vy
Y2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNDcsMTIgKzE0MSwxMiBAQCBib29sIFJlbW90ZVJl
c291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaQogCiAgICAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7
CiAKLSAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQotICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5yZW1v
dmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7Cisg
ICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1hZ2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICB1cGRhdGVIYXNBY3RpdmVE
cmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChtX3Jlc291
cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkp
CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDYWNoaW5nIHRoZSByZW1v
dGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5oCmluZGV4IDIwMTYyMmRkZDdlMC4uYTgxNDFjMmFkNDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFs
aWZpZWRSZXNvdXJjZUhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5o
PgpAQCAtODUsMTIgKzg2LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2
ZURyYXdhYmxlcygpOwogCi0gICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcjsKLQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAg
bV9yZXNvdXJjZUhlYXA7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJs
ZXMgeyBmYWxzZSB9OworICAgIFF1YWxpZmllZFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsK
IAogICAgIFJlc291cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworCisg
ICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDIwNDFmYTUyZGYuLmQxZGJiZDhkZDQzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
MDk1LDYgKzMwOTUsNyBAQAogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yVUlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Ykluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMUNCRjkwMTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNG
MThGM0UyNkJCNUQ5MDAwNEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IExvZ0luaXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUQwNTMwQzkyNThFQUI0NDAwRTQzNkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1w
bGlzdC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3Qu
cHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTExMiw2ICs5MTEzLDcgQEAKIAkJ
CQk3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVx
dWVzdENvY29hLm1tICovLAogCQkJCTdCQ0Y3MENDMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwICovLAogCQkJCTdCQ0Y3MENFMjYxNDkz
NUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLywK
KwkJCQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBl
MTVkZGRkNDAzNDMuLmI3YjkwNzYwNGNiYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTA3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNz
XSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDc6IEZpbmlzaCBtaWdy
YXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggNWE2MmRhZDhhYWNkLi43MmZmNzUwYWJiOTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5
TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFRFU1QoRGlzcGxheUxp
c3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdSZXNvdXJjZSkKIAogICAgIHsKICAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwotICAgICAgICBSZXNvdXJjZUhlYXAgcmVzb3VyY2VIZWFwOworICAgICAgICBDb25jcmV0ZVJl
c291cmNlSGVhcCByZXNvdXJjZUhlYXA7CiAgICAgICAgIHJlc291cmNlSGVhcC5hZGQoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAg
ICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIGxpc3QsICZyZXNvdXJjZUhlYXAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440640</attachid>
            <date>2021-10-08 10:29:25 -0700</date>
            <delta_ts>2021-10-11 21:33:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22884</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGZkZDJlZDM3MWZiNWJkNmE2N2ZjN2MzZjk5NDhhNDZhZGNlZmUyNmUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgT2N0IDgg
MTA6Mjg6NTYgMjAyMSAtMDcwMAoKICAgIFBhcnQgNwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NzRlNGRhNDIz
OGQuLmQ0YzAzYjEzY2VjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTA4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDc6IEZp
bmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0
ZSBhIGJ1bmNoIG9mIHRoZSBtZXRob2RzIG9mIENvbmNyZXRlUmVzb3VyY2VIZWFwIGJlY2F1c2Ug
dGhleSBhcmUgb25seSB1c2VkIGluIHRoZQorICAgICAgICBHUFUgUHJvY2Vzcy1zcGVjaWZpYyBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXNvdXJjZUhlYXA6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJ
bWFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVz
b3VyY2VIZWFwOjpnZXRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc0ltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc05hdGl2ZUlt
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNv
dXJjZUhlYXA6Omhhc0ZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlTmF0aXZlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6cmVtb3ZlRm9udCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVzb3VyY2VIZWFwOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwOjpkZWxldGVBbGxGb250cyk6IERlbGV0ZWQuCisKIDIwMjEtMTAt
MDggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjog
Q29uc29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aAppbmRleCBmMjQ1ZDBiNTExM2UuLmJjMWZkODczYWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
RHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAotICAgIFJlc291cmNlSGVh
cCBtX3Jlc291cmNlSGVhcDsKKyAgICBDb25jcmV0ZVJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVh
cDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29s
IG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3Vy
Y2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAppbmRleCBjYTg3M2ZiNjA4MGYuLjIxMzE4Y2FjZTgy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmgKQEAgLTM2
LDYgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKIGNsYXNzIFJlc291cmNlSGVhcCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UmVzb3VyY2VI
ZWFwKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZm
ZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBO
YXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QgPSAwOworfTsKKworY2xhc3MgQ29uY3JldGVSZXNvdXJjZUhlYXAgOiBw
dWJsaWMgUmVzb3VyY2VIZWFwIHsKIHB1YmxpYzoKICAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8SW1hZ2VCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCiAgICAgewpAQCAtNTIsNTEgKzYxLDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZv
bnQpKTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAg
ICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICBO
YXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKLSAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgRm9udCogZ2V0Rm9udChSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9udHMuZ2V0KHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1faW1hZ2VCdWZmZXJzLmlzRW1wdHkoKTsKLSAg
ICB9Ci0KLSAgICBib29sIGhhc05hdGl2ZUltYWdlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhbV9uYXRpdmVJbWFnZXMuaXNFbXB0eSgpOwotICAgIH0KLQotICAgIGJvb2wgaGFzRm9u
dCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1fZm9udHMuaXNFbXB0eSgpOwotICAg
IH0KLQotICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB9
Ci0KLSAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9u
YXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfQot
Ci0gICAgYm9vbCByZW1vdmVGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mb250cy5yZW1v
dmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB9Ci0KICAgICB2b2lkIGNsZWFy
KCkKICAgICB7CiAgICAgICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7CkBAIC0xMDQsMTEgKzgz
LDYgQEAgcHVibGljOgogICAgICAgICBtX2ZvbnRzLmNsZWFyKCk7CiAgICAgfQogCi0gICAgdm9p
ZCBkZWxldGVBbGxGb250cygpCi0gICAgewotICAgICAgICBtX2ZvbnRzLmNsZWFyKCk7Ci0gICAg
fQotCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBS
ZWY8SW1hZ2VCdWZmZXI+PiBtX2ltYWdlQnVmZmVyczsKICAgICBIYXNoTWFwPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj4gbV9uYXRpdmVJbWFnZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGM2M2ZhYzQyNTRkOS4uM2FkMzg1MDBiMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDIxLTEwLTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVycyBQYXJ0IDc6IEZpbmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODQwMTU1ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm93IHRoYXQgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcCBleGlzdHMsIHdlIGNhbiBtYWtl
IGEgUmVzb3VyY2VIZWFwIHN1YmNsYXNzIHNwZWNpZmljYWxseSBmb3IKKyAgICAgICAgdGhlIEdQ
VSBwcm9jZXNzLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyBob2xkcyBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzCisgICAgICAgIGluc3RlYWQgb2YgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9R
dWFsaWZpZWRSZXNvdXJjZUhlYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmll
ZFJlc291cmNlSGVhcDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwKToKKyAgICAgICAgKFdlYktpdDo6
UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjphZGQpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRS
ZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVh
bGlmaWVkUmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0Rm9udCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6Omhhc05hdGl2ZUltYWdlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpoYXNGb250IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6cmVtb3ZlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OnJlbW92ZUZv
bnQpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZv
bnRzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJj
ZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZElt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlZE5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVkRm9udCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDIxLTEwLTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNvbGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZp
ZWRSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFs
aWZpZWRSZXNvdXJjZUhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmMyYTc4MGM0ZjNjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApAQCAtMCwwICsxLDEzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RS
ZXNvdXJjZUhlYXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXVhbGlmaWVkUmVzb3VyY2VIZWFw
IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgeworcHVibGljOgor
ICAgIFF1YWxpZmllZFJlc291cmNlSGVhcChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlBy
b2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBS
ZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCisgICAgeworICAgICAgICBB
U1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgICAgIG1faW1hZ2VCdWZmZXJzLmFkZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICB9CisK
KyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYgaW1hZ2Up
CisgICAgeworICAgICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgICAgIG1fbmF0
aXZlSW1hZ2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2Up
KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6Rm9udD4mJiBm
b250KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgICAgICBt
X2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOwor
ICAgIH0KKworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldCh7
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsK
KyAgICB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQo
eyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7
CisgICAgfQorCisgICAgV2ViQ29yZTo6Rm9udCogZ2V0Rm9udChXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udHMuZ2V0KHsgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgIH0KKworICAgIFdlYkNv
cmU6OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIH0KKworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIFdlYkNvcmU6OkZvbnQq
IGdldEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZvbnRzLmdl
dChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJvb2wgaGFzSW1h
Z2VCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX2ltYWdlQnVmZmVycy5p
c0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gIW1fbmF0aXZlSW1hZ2VzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX2ZvbnRzLmlz
RW1wdHkoKTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZUltYWdlQnVmZmVyKFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVOYXRpdmVJbWFnZShRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlRm9udChRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVBbGxGb250cygpCisgICAg
eworICAgICAgICBtX2ZvbnRzLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgSGFzaE1h
cDxRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4+IG1faW1hZ2VCdWZmZXJzOworICAgIEhhc2hNYXA8UXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiBtX25hdGl2ZUlt
YWdlczsKKyAgICBIYXNoTWFwPFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVmPFdlYkNvcmU6OkZvbnQ+PiBtX2ZvbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGVlYmFmZjcwZDk3ZS4uYWY5ZTQyODY5
YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0zMiwxMyArMzIsMTIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6
UmVtb3RlUmVzb3VyY2VDYWNoZShQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
cikKLSAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisg
ICAgOiBtX3Jlc291cmNlSGVhcCh3ZWJQcm9jZXNzSWRlbnRpZmllcikKIHsKIH0KIAogUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYg
b3RoZXIpCi0gICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKG90aGVyLm1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpCi0gICAgLCBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VI
ZWFwKSkKKyAgICA6IG1fcmVzb3VyY2VIZWFwKFdURk1vdmUob3RoZXIubV9yZXNvdXJjZUhlYXAp
KQogICAgICwgbV9yZXNvdXJjZVVzZUNvdW50ZXJzKFdURk1vdmUob3RoZXIubV9yZXNvdXJjZVVz
ZUNvdW50ZXJzKSkKIHsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKQEAgLTQ3LDgg
KzQ2LDcgQEAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVS
ZXNvdXJjZUNhY2hlJiYgb3RoZXIpCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1h
Z2VCdWZmZXIoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZm
ZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRl
bnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFw
LmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsK
ICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNl
Q291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNTYsMTUgKzU0LDEzIEBA
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIFF1YWxpCiAKIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewotICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNv
dXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJ
bWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLm9iamVjdCgpID09IGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSk7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFk
ZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2UpKTsK
KyAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGltYWdlKSk7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBlbnN1
cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTcy
LDIyICs2OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2Uo
UmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBRdWFsaWZpZWRSZQogCiBOYXRpdmVJbWFnZSogUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAg
ICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdl
dE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAg
cmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxG
b250PiYmIGZvbnQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSA9PSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOworICAg
IG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUo
Zm9udCkpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKIEZvbnQqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQo
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNl
SGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0x
NDcsMTIgKzE0MSwxMiBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVz
b3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaQogCiAgICAgbV9yZXNvdXJj
ZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CiAKLSAgICBpZiAobV9yZXNvdXJjZUhlYXAu
cmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQot
ICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92
ZUltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgfHwgbV9y
ZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkgewogICAgICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJl
bW92ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFw
cGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDIwMTYyMmRkZDdl
MC4uYTgxNDFjMmFkNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgpAQCAtODUsMTIgKzg2LDExIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCi0gICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKLQotICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7Ci0gICAgc3RkOjph
dG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OworICAgIFF1YWxpZmll
ZFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKIAogICAgIFJlc291cmNlVXNlQ291bnRlcnNN
YXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNB
Y3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBl
ZDIwNDFmYTUyZGYuLmQxZGJiZDhkZDQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDk1LDYgKzMwOTUsNyBAQAogCQkxQ0E4Qjk0
NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUNCQkU0OUUxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkx
Q0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUNCRjkwMTIyNzEwMThCNTAwMEM0
NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRS
ZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNTRBRkQyNzBG
OTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThGM0UyNkJCNUQ5MDAwNEIxNzIyIC8qIExv
Z0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ0luaXRpYWxpemF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwNTMwQzkyNThFQUI0NDAwRTQz
NkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTExMiw2ICs5MTEzLDcgQEAKIAkJCQk3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAg
LyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovLAogCQkJCTdCQ0Y3
MENDMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3QuY3BwICovLAogCQkJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLywKKwkJCQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1
N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBo
aWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZDNhN2RhMTBmNTcuLjY0OGE3ZWVmM2NhYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTEwLTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVycyBQYXJ0IDc6IEZpbmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0
byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTA4ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQ
cm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDY6IENvbnNv
bGlkYXRlIERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5k
ZXggNWE2MmRhZDhhYWNkLi43MmZmNzUwYWJiOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmdS
ZXNvdXJjZSkKIAogICAgIHsKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotICAgICAgICBSZXNvdXJjZUhlYXAgcmVz
b3VyY2VIZWFwOworICAgICAgICBDb25jcmV0ZVJlc291cmNlSGVhcCByZXNvdXJjZUhlYXA7CiAg
ICAgICAgIHJlc291cmNlSGVhcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRl
eHQsIGxpc3QsICZyZXNvdXJjZUhlYXAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440884</attachid>
            <date>2021-10-11 21:33:41 -0700</date>
            <delta_ts>2021-10-12 01:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22869</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDM5MjIyMmQ5OTA0OWY1MTBiM2M2ZDEwNTYwYzQ1NmZjY2FhMGZkZWEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gT2N0IDEx
IDIxOjMyOjQ4IDIwMjEgLTA3MDAKCiAgICBQYXJ0IDkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y1MGM0YmNh
NzAwLi5mNDJhZWVlMjMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMC0x
MSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgUGFydCA5OiBG
aW5pc2ggbWlncmF0aW5nIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDE1NTg0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkZWxl
dGUgYSBidW5jaCBvZiB0aGUgbWV0aG9kcyBvZiBSZXNvdXJjZUhlYXBJbXBsIGJlY2F1c2UgdGhl
eSBhcmUgb25seSB1c2VkIGluIHRoZQorICAgICAgICBHUFUgUHJvY2Vzcy1zcGVjaWZpYyBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJbWFn
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3Vy
Y2VIZWFwOjpnZXRGb250IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc0ltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6Omhhc05hdGl2ZUltYWdl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXA6Omhhc0ZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6cmVtb3ZlTmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6
cmVtb3ZlRm9udCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVz
b3VyY2VIZWFwOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVzb3VyY2VIZWFwOjpkZWxldGVBbGxGb250cyk6IERlbGV0ZWQuCisKIDIwMjEtMTAtMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BV
IFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgNjogQ29u
c29saWRhdGUgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApp
bmRleCA4NmYzMzBlZDU5ZDMuLjE2MWQzYjE2MTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
QEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVt
cEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAotICAgIFJlc291cmNlSGVhcCBt
X3Jlc291cmNlSGVhcDsKKyAgICBSZXNvdXJjZUhlYXBJbXBsIG1fcmVzb3VyY2VIZWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOwogICAgIGJvb2wgbV90cmFj
a3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlc291cmNlSGVhcC5oCmluZGV4IGNhODczZmI2MDgwZi4uMTk1YjBmMWViNmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaApAQCAtMzYsNiArMzYs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xh
c3MgUmVzb3VyY2VIZWFwIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZUhlYXAoKSA9
IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBSZXNvdXJjZUhlYXBJbXBsIDogcHVibGljIFJlc291
cmNlSGVhcCB7CiBwdWJsaWM6CiAgICAgdm9pZCBhZGQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEltYWdlQnVmZmVyPiYmIGltYWdl
QnVmZmVyKQogICAgIHsKQEAgLTUyLDUxICs2MSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9u
dHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShmb250KSk7CiAgICAg
fQogCi0gICAgSW1hZ2VCdWZmZXIqIGdldEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgSW1hZ2VCdWZm
ZXIqIGdldEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQog
Ci0gICAgTmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgTmF0aXZlSW1hZ2Uq
IGdldE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9u
YXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0g
ICAgRm9udCogZ2V0Rm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2ZvbnRzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIH0KIAotICAgIGJvb2wgaGFzSW1hZ2VCdWZmZXIoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICFtX2ltYWdlQnVmZmVycy5pc0VtcHR5KCk7Ci0gICAgfQotCi0gICAg
Ym9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1fbmF0
aXZlSW1hZ2VzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0ZvbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICFtX2ZvbnRzLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBi
b29sIHJlbW92ZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZl
cnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfQotCi0gICAgYm9v
bCByZW1vdmVOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2Vz
LnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIH0KLQotICAgIGJvb2wg
cmVtb3ZlRm9udChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9udHMucmVtb3ZlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfQotCiAgICAgdm9pZCBjbGVhcigpCiAgICAgewog
ICAgICAgICBtX2ltYWdlQnVmZmVycy5jbGVhcigpOwpAQCAtMTA0LDExICs4Myw2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb250cy5jbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQgZGVsZXRlQWxs
Rm9udHMoKQotICAgIHsKLSAgICAgICAgbV9mb250cy5jbGVhcigpOwotICAgIH0KLQogcHJpdmF0
ZToKICAgICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEltYWdlQnVm
ZmVyPj4gbV9pbWFnZUJ1ZmZlcnM7CiAgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4+IG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YzI4
MWJkZDNlMGUuLjljNWYyNWJkMjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0x
MC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgUGFydCA5
OiBGaW5pc2ggbWlncmF0aW5nIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE0MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDE1NTg0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0
IERpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgZXhpc3RzLCB3ZSBjYW4gbWFrZSBhIFJlc291cmNl
SGVhcCBzdWJjbGFzcyBzcGVjaWZpY2FsbHkgZm9yCisgICAgICAgIHRoZSBHUFUgcHJvY2Vzcy4g
VGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2xhc3MgaG9sZHMgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBpbnN0ZWFkIG9mIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVz
b3VyY2VIZWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhl
YXA6OlF1YWxpZmllZFJlc291cmNlSGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJl
c291cmNlSGVhcDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFw
OjpnZXRJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291
cmNlSGVhcDo6Z2V0TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZp
ZWRSZXNvdXJjZUhlYXA6OmdldEZvbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZp
ZWRSZXNvdXJjZUhlYXA6Omhhc0ltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpoYXNOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzRm9udCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6cmVtb3ZlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OnJlbW92ZU5hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpyZW1vdmVGb250KToKKyAgICAg
ICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpkZWxldGVBbGxGb250cyk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRp
dmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNh
Y2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZv
bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJl
bW92ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMS0xMC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cnMgUGFydCA2OiBDb25zb2xpZGF0ZSBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VI
ZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3Vy
Y2VIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMmE3ODBj
NGYzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFw
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1
ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFF1YWxpZmllZFJlc291cmNlSGVhcCA6IHB1YmxpYyBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwIHsKK3B1YmxpYzoKKyAgICBRdWFsaWZp
ZWRSZXNvdXJjZUhlYXAoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIpCisgICAgICAgIDogbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRp
ZmllcikKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXIpOworICAgICAgICBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgfQorCisgICAgdm9pZCBh
ZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmIGltYWdlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgICAgICBtX25hdGl2ZUltYWdlcy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgfQor
CisgICAgdm9pZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkZvbnQ+JiYgZm9udCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICAgICAgbV9mb250cy5hZGQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKKyAgICB9CisKKyAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQoeyByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAgfQorCisg
ICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHsgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgIH0KKwor
ICAgIFdlYkNvcmU6OkZvbnQqIGdldEZvbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2ZvbnRzLmdldCh7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9
CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpGb250KiBnZXRGb250KFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mb250cy5nZXQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBib29sIGhhc0ltYWdlQnVmZmVyKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9pbWFnZUJ1ZmZlcnMuaXNFbXB0eSgpOwor
ICAgIH0KKworICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICFtX25hdGl2ZUltYWdlcy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNG
b250KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9mb250cy5pc0VtcHR5KCk7Cisg
ICAgfQorCisgICAgYm9vbCByZW1vdmVJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZUZvbnQoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQorICAgIHsKKyAgICAgICAg
bV9mb250cy5jbGVhcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIEhhc2hNYXA8UXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PiBt
X2ltYWdlQnVmZmVyczsKKyAgICBIYXNoTWFwPFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gbV9uYXRpdmVJbWFnZXM7CisgICAg
SGFzaE1hcDxRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxXZWJDb3Jl
OjpGb250Pj4gbV9mb250czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmNwcAppbmRleCBlZWJhZmY3MGQ5N2UuLmFmOWU0Mjg2OWMyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291
cmNlQ2FjaGUoUHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgOiBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIDogbV9yZXNv
dXJjZUhlYXAod2ViUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiB9CiAKIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVzb3VyY2VDYWNoZSYmIG90aGVyKQotICAg
IDogbV93ZWJQcm9jZXNzSWRlbnRpZmllcihvdGhlci5tX3dlYlByb2Nlc3NJZGVudGlmaWVyKQot
ICAgICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlSGVhcCkpCisgICAg
OiBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkKICAgICAsIG1f
cmVzb3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VVc2VDb3VudGVycykp
CiB7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CkBAIC00Nyw4ICs0Niw3IEBAIFJl
bW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVzb3VyY2VDYWNo
ZSYmIG90aGVyKQogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJl
ZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGltYWdlQnVmZmVyLT5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwot
ICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0
KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CiAgICAgdXBkYXRl
SGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTU2LDE1ICs1NCwxMyBAQCB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBRdWFsaQogCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVk
SW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmll
cik7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdl
dEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1h
Z2UsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSA9PSBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwotICAgIEFT
U0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNv
dXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkp
OwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VV
c2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC03MiwyMiArNjgsMjAg
QEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJ
bWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmUKIAogTmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIpOwotICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFn
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jl
c291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250
LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkgPT0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwotICAgIEFTU0VS
VChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGZvbnQpKTsKKyAgICBtX3Jlc291cmNl
SGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKIAog
ICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCiBGb250KiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250KFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEZvbnQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9u
dChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNl
Q2FjaGU6OmVuc3VyZVJlc291cmNlVXNlQ291bnRlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAtMTQ3LDEyICsxNDEs
MTIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291cmNlKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmkKIAogICAgIG1fcmVzb3VyY2VVc2VDb3VudGVy
cy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdl
QnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkKLSAgICAgICAgfHwg
bV9yZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLm9iamVjdCgpKSkgeworICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVJbWFnZUJ1ZmZl
cihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFw
LnJlbW92ZU5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAg
ICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlRm9udChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9y
ZSByZWxlYXNpbmcgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCAyMDE2MjJkZGQ3ZTAuLmE4MTQxYzJh
ZDQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KQEAgLTg1LDEyICs4NiwxMSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAotICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7Ci0KLSAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwotICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1faGFzQWN0aXZlRHJhd2FibGVzIHsgZmFsc2UgfTsKKyAgICBRdWFsaWZpZWRSZXNvdXJjZUhl
YXAgbV9yZXNvdXJjZUhlYXA7CiAKICAgICBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwIG1fcmVzb3Vy
Y2VVc2VDb3VudGVyczsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzQWN0aXZlRHJhd2Fi
bGVzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWIzMmViYTIyMDhh
Li40OTE0ZGRjNGI4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzA5OCw2ICszMDk4LDcgQEAKIAkJMUNBOEI5NDQxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4
MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUNCQkU0OUYxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTFDQkY5MDEyMjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFs
aWZpZWRSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVzb3VyY2VIZWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzU0QUZEMjcwRjk2NTQwMDVCRjhC
RSAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRjE4RjNFMjZCQjVEOTAwMDRCMTcyMiAvKiBMb2dJbml0aWFsaXph
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dJbml0aWFsaXphdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEM5MjU4RUFCNDQwMEU0MzZGNyAvKiBjb21i
aW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiY29tYmluZS1m
ZWF0dXJlLWZsYWdzLXBsaXN0LnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkx
MjksNiArOTEzMCw3IEBACiAJCQkJN0JDRjcwQ0IyNjE0OTM1RTAwRTRGQjcwIC8qIFNjb3BlZFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSAqLywKIAkJCQk3QkNGNzBDQzI2MTQ5MzVG
MDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLywK
IAkJCQk3QkNGNzBDRTI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0LmggKi8sCisJCQkJMUNCRjkwMTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxp
ZmllZFJlc291cmNlSGVhcC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNmMzZmYzMDRmNDQ3Li41MzQ3YmFlNDdkZDYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0xMC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMg
UGFydCA5OiBGaW5pc2ggbWlncmF0aW5nIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0MDE1
NTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMC0xMSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5p
cXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgUGFydCA2OiBDb25zb2xpZGF0ZSBEaXNw
bGF5TGlzdDo6UmVzb3VyY2VIZWFwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDVhNjJkYWQ4
YWFjZC4uNTBlMTUzYmI0MDFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAK
ICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsg
MTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAgICAgUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsK
KyAgICAgICAgUmVzb3VyY2VIZWFwSW1wbCByZXNvdXJjZUhlYXA7CiAgICAgICAgIHJlc291cmNl
SGVhcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpKTsKIAogICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIGxpc3QsICZyZXNv
dXJjZUhlYXAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440909</attachid>
            <date>2021-10-12 01:44:44 -0700</date>
            <delta_ts>2021-10-12 11:57:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231414-20211012014443.patch</filename>
            <type>text/plain</type>
            <size>26484</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2ZGU0MTQ3ZWY2MTg2
MTFmNDVhNzZlYzA2OWQ0ODc3ZWIzMTdhYi4uMzY3ZmYwOTRkNmNiYzM1MzZkYTYwZTA2YzY2ODg5
YzdmOTA2ODI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZpbmlzaCBt
aWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0ZSBhIGJ1
bmNoIG9mIHRoZSBtZXRob2RzIG9mIFJlc291cmNlSGVhcEltcGwgYmVjYXVzZSB0aGV5IGFyZSBv
bmx5IHVzZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9jZXNzLXNwZWNpZmljIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
c291cmNlSGVhcDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6
OmdldEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6
aGFzRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVG
b250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNv
dXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMiAgVGltIE5n
dXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpc1NhbWVPcmlnaW5Bc1RvcERv
Y3VtZW50KCkgaW4gRG9jdW1lbnRMb2FkZXI6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ODZiMThmZTgwMThkZDQ4OTM1MGE4YjczY2EwY2RmNDQ5
MDVjOTQzLi41NTk5YTQ0Yzk4ZDY4MmQzNzQzMTY3ODA4MzU2MWFjMjVhMGZjZmU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEwLTEyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZpbmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3Vy
Y2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgRGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcCBleGlz
dHMsIHdlIGNhbiBtYWtlIGEgUmVzb3VyY2VIZWFwIHN1YmNsYXNzIHNwZWNpZmljYWxseSBmb3IK
KyAgICAgICAgdGhlIEdQVSBwcm9jZXNzLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFz
cyBob2xkcyBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzCisgICAgICAgIGlu
c3RlYWQgb2YgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwKToKKyAg
ICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjphZGQpOgorICAgICAgICAoV2Vi
S2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXROYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0Rm9udCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6Omhhc05hdGl2
ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpo
YXNGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpy
ZW1vdmVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVh
cDo6cmVtb3ZlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJj
ZUhlYXA6OnJlbW92ZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhl
YXA6OmRlbGV0ZUFsbEZvbnRzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpSZW1vdGVSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTEwLTExICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDg6IENvbnNvbGlkYXRlIERpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggODZmMzMwZWQ1OWQz
ZGQwZjQ4MzExOWU0MTY0OTlmNTc1MzhkYjEyZC4uMTYxZDNiMTYxOWE5NjNjODgyZmQ2N2JhN2Jm
ZTE3ODQ2OWNhNmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZs
YWdzLCBJdGVtSGFuZGxlKTsKIAotICAgIFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKKyAg
ICBSZXNvdXJjZUhlYXBJbXBsIG1fcmVzb3VyY2VIZWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
dGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+
IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOwogICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5o
CmluZGV4IDk1ZTE4NTVjNzUyMzU5NjNjMzE4YzNkNDUxODcwNGU5ODljYzAzMjguLjdhMTI5OTM2
MjdhNDljODE5NTI3MDljYTM2NDEzYjk5YWQ5YmQ4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVh
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCkBAIC0zNiw4NCArMzYsNDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogY2xhc3MgUmVzb3VyY2VIZWFwIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZUhlYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB2
aXJ0dWFsIEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFn
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZv
bnQqIGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7Cit9Owor
CitjbGFzcyBSZXNvdXJjZUhlYXBJbXBsIDogcHVibGljIFJlc291cmNlSGVhcCB7CiBwdWJsaWM6
CiAgICAgdm9pZCBhZGQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogICAgIHsKLSAg
ICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4oV1RGTW92ZShpbWFnZUJ1ZmZlcikpKS5pc05ld0VudHJ5KQotICAg
ICAgICAgICAgKyttX2ltYWdlQnVmZmVyQ291bnQ7CisgICAgICAgIG1fcmVzb3VyY2VzLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4oV1RGTW92ZShp
bWFnZUJ1ZmZlcikpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UpCiAgICAgewotICAgICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgUmVmUHRyPE5hdGl2ZUltYWdlPihXVEZNb3ZlKGltYWdlKSkpLmlzTmV3
RW50cnkpCi0gICAgICAgICAgICArK21fbmF0aXZlSW1hZ2VDb3VudDsKKyAgICAgICAgbV9yZXNv
dXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPE5hdGl2ZUltYWdl
PihXVEZNb3ZlKGltYWdlKSkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250PiYmIGZv
bnQpCiAgICAgewotICAgICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgUmVmUHRyPEZvbnQ+KFdURk1vdmUoZm9udCkpKS5pc05ld0VudHJ5KQotICAg
ICAgICAgICAgKyttX2ZvbnRDb3VudDsKKyAgICAgICAgbV9yZXNvdXJjZXMuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPEZvbnQ+KFdURk1vdmUoZm9udCkpKTsKICAgICB9
CiAKLSAgICBJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICBJbWFnZUJ1ZmZl
ciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8
SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAg
TmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgTmF0aXZlSW1hZ2UqIGdldE5h
dGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0PE5hdGl2ZUlt
YWdlPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIEZvbnQqIGdl
dEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgY29uc3QKKyAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAg
ICByZXR1cm4gZ2V0PEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQog
Ci0gICAgYm9vbCBoYXNJbWFnZUJ1ZmZlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlckNvdW50OwotICAgIH0KLQotICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKLSAgICB9Ci0K
LSAgICBib29sIGhhc0ZvbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9udENv
dW50OwotICAgIH0KLQotICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAg
IHJldHVybiByZW1vdmU8SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
bV9pbWFnZUJ1ZmZlckNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gcmVtb3ZlPE5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIG1fbmF0aXZlSW1hZ2VDb3VudCk7Ci0gICAgfQotCi0gICAgYm9vbCBy
ZW1vdmVGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gcmVtb3ZlPEZvbnQ+KHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgbV9mb250Q291bnQpOwotICAgIH0KLQogICAgIHZvaWQgY2xlYXIo
KQogICAgIHsKICAgICAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKLSAgICAgICAgbV9pbWFnZUJ1
ZmZlckNvdW50ID0gMDsKLSAgICAgICAgbV9uYXRpdmVJbWFnZUNvdW50ID0gMDsKLSAgICAgICAg
bV9mb250Q291bnQgPSAwOwotICAgIH0KLQotICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQotICAg
IHsKLSAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJlc291cmNl
KSB7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8Rm9u
dD4+KHJlc291cmNlLnZhbHVlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZm9udENvdW50ID0g
MDsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMjgsMjUgKzkzLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIHJlbW92ZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1bnNpZ25l
ZCYgY291bnRlcikKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlcy5m
aW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9
PSBtX3Jlc291cmNlcy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291
cmNlcy5yZW1vdmUoaXRlcmF0b3IpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAg
LS1jb3VudGVyOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQogICAgIHVzaW5nIFJl
c291cmNlID0gVmFyaWFudDxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBSZWZQdHI8Rm9udD4+OwogICAgIEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZXNvdXJjZT4gbV9yZXNvdXJjZXM7Ci0gICAgdW5zaWduZWQgbV9pbWFnZUJ1ZmZlckNvdW50
IHsgMCB9OwotICAgIHVuc2lnbmVkIG1fbmF0aXZlSW1hZ2VDb3VudCB7IDAgfTsKLSAgICB1bnNp
Z25lZCBtX2ZvbnRDb3VudCB7IDAgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZWQ0MGI1YTNmMjVkMjk2NTZlYjg3OTFjN2UyMWQ0Y2I0ZWFmYmM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291
cmNlSGVhcC5oCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRm9udC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBRdWFsaWZpZWRSZXNvdXJjZUhlYXAgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc291cmNlSGVhcCB7CitwdWJsaWM6CisgICAgUXVhbGlmaWVkUmVzb3VyY2VIZWFwKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICA6
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgYWRkKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGFkZDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4ocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgbV9pbWFnZUJ1
ZmZlckNvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBhZGQ8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSksIG1fbmF0
aXZlSW1hZ2VDb3VudCk7CisgICAgfQorCisgICAgdm9pZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNv
cmU6OkZvbnQ+JiYgZm9udCkKKyAgICB7CisgICAgICAgIGFkZDxXZWJDb3JlOjpGb250PihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCksIG1fZm9udENvdW50KTsKKyAg
ICB9CisKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
IH0pOworICAgIH0KKworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpO
YXRpdmVJbWFnZT4oeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIgfSk7CisgICAgfQorCisgICAgV2ViQ29yZTo6Rm9udCogZ2V0Rm9udChXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpGb250Pih7
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsK
KyAgICB9CisKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgV2ViQ29yZTo6TmF0
aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZ2V0PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIH0KKworICAgIFdlYkNvcmU6OkZvbnQqIGdldEZvbnQoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6Rm9udD4ocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBib29sIGhhc0ltYWdlQnVmZmVyKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyQ291bnQ7CisgICAgfQorCisgICAg
Ym9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9uYXRp
dmVJbWFnZUNvdW50OworICAgIH0KKworICAgIGJvb2wgaGFzRm9udCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9mb250Q291bnQ7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVJbWFn
ZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZTxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVyQ291
bnQpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgbV9uYXRpdmVJbWFnZUNvdW50KTsKKyAgICB9CisKKyAgICBib29s
IHJlbW92ZUZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29y
ZTo6Rm9udD4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZvbnRDb3VudCk7CisgICAg
fQorCisgICAgdm9pZCBkZWxldGVBbGxGb250cygpCisgICAgeworICAgICAgICBtX3Jlc291cmNl
cy5yZW1vdmVJZihbXSAoY29uc3QgYXV0byYgcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxXZWJDb3JlOjpGb250Pj4ocmVzb3VyY2Uu
dmFsdWUpOworICAgICAgICB9KTsKKyAgICAgICAgbV9mb250Q291bnQgPSAwOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8VD4mJiBvYmplY3QsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPFQ+KFdURk1vdmUob2JqZWN0KSkpLmlzTmV3
RW50cnkpCisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgVCogZ2V0KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9yZXNvdXJjZXMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFQ+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIGJvb2wgcmVtb3ZlKFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9
IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFQ+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIHJl
c3VsdCA9IG1fcmVzb3VyY2VzLnJlbW92ZShpdGVyYXRvcik7CisgICAgICAgIEFTU0VSVChyZXN1
bHQpOworICAgICAgICAtLWNvdW50ZXI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgdXNpbmcgUmVzb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4sIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4sIFJlZlB0cjxXZWJDb3JlOjpGb250Pj47
CisgICAgSGFzaE1hcDxRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291
cmNlPiBtX3Jlc291cmNlczsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyOworICAgIHVuc2lnbmVkIG1faW1hZ2VCdWZmZXJDb3VudCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX25hdGl2ZUltYWdlQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9m
b250Q291bnQgeyAwIH07CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmNwcAppbmRleCBlZWJhZmY3MGQ5N2VkZWRiYmQ5Yjg5NGNjODg2MmYzYTAw
MDJkNGNjLi5hZjllNDI4NjljMmE4N2EyMWNjMTVkYzg5YTczZDU5M2RjYTA3MjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwCkBAIC0zMiwxMyArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZShQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKLSAgICA6IG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX3Jlc291
cmNlSGVhcCh3ZWJQcm9jZXNzSWRlbnRpZmllcikKIHsKIH0KIAogUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYgb3RoZXIpCi0gICAg
OiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKG90aGVyLm1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpCi0g
ICAgLCBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVyLm1fcmVzb3VyY2VIZWFwKSkKKyAgICA6
IG1fcmVzb3VyY2VIZWFwKFdURk1vdmUob3RoZXIubV9yZXNvdXJjZUhlYXApKQogICAgICwgbV9y
ZXNvdXJjZVVzZUNvdW50ZXJzKFdURk1vdmUob3RoZXIubV9yZXNvdXJjZVVzZUNvdW50ZXJzKSkK
IHsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKQEAgLTQ3LDggKzQ2LDcgQEAgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hl
JiYgb3RoZXIpCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVm
PEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2VCdWZmZXItPnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0g
ICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKICAgICB1cGRhdGVI
YXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNTYsMTUgKzU0LDEzIEBAIHZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VC
dWZmZXIsIFF1YWxpCiAKIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJ
bWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVy
KTsKLSAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0
SW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFn
ZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9i
amVjdCgpID09IGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgQVNT
RVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2UpKTsKKyAgICBtX3Jlc291
cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7
CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVVz
ZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTcyLDIyICs2OCwyMCBA
QCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUlt
YWdlPiYmIGltYWdlLCBRdWFsaWZpZWRSZQogCiBOYXRpdmVJbWFnZSogUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICBBU1NFUlQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldE5hdGl2ZUltYWdl
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fcmVz
b3VyY2VIZWFwLmdldE5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQs
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmpl
Y3QoKSA9PSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJU
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOworICAgIG1fcmVzb3VyY2VI
ZWFwLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOwogCiAg
ICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiB9CiAKIEZvbnQqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRGb250
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xNDcsMTIgKzE0MSwx
MiBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaQogCiAgICAgbV9yZXNvdXJjZVVzZUNvdW50ZXJz
LnJlbW92ZShpdGVyYXRvcik7CiAKLSAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKQotICAgICAgICB8fCBt
X3Jlc291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCkpKSB7CisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAu
cmVtb3ZlTmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAg
ICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSkpCisgICAgaWYgKG1fcmVzb3VyY2VIZWFwLnJlbW92ZUZvbnQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3Jl
IHJlbGVhc2luZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDIwMTYyMmRkZDdlMGU1NWQ2ODMwZmRl
NTYzNWRjMGE3NTMwMDdjNTIuLmE4MTQxYzJhZDQzNDBjZGE1YmVlZGJhN2UwNjRmMDdlMjUzYjQz
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIlF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlF1YWxpZmllZFJlc291cmNlSGVhcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05hdGl2ZUltYWdlLmg+CkBAIC04NSwxMiArODYsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKLSAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwotCi0gICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKLSAgICBzdGQ6OmF0b21pYzxib29sPiBt
X2hhc0FjdGl2ZURyYXdhYmxlcyB7IGZhbHNlIH07CisgICAgUXVhbGlmaWVkUmVzb3VyY2VIZWFw
IG1fcmVzb3VyY2VIZWFwOwogCiAgICAgUmVzb3VyY2VVc2VDb3VudGVyc01hcCBtX3Jlc291cmNl
VXNlQ291bnRlcnM7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2hhc0FjdGl2ZURyYXdhYmxl
cyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViMzJlYmEyMjA4YTRk
ODQ5YzQ1NzA3MWJjYTQzODk2MjUyMTcwZTUuLjI4NGM5OGU4ZjhjNjViZjEzNTM3MDcxN2EzMzQ4
YWI2NzdmNmVkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzA5OCw2ICszMDk4LDcgQEAKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUNCQkU0OUYxOUI2NkM1
MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTFDQkY5MDEyMjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFsaWZp
ZWRSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzU0QUZEMjcwRjk2NTQwMDVCRjhCRSAv
KiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDRjE4RjNFMjZCQjVEOTAwMDRCMTcyMiAvKiBMb2dJbml0aWFsaXphdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dJbml0aWFsaXphdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEM5MjU4RUFCNDQwMEU0MzZGNyAvKiBjb21iaW5l
LWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiY29tYmluZS1mZWF0
dXJlLWZsYWdzLXBsaXN0LnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxMDgs
NiArOTEwOSw3IEBACiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0
UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUg
LyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCisJCQkJMUNCRjkw
MTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovLAogCQkJCUY0
OEJCOEUwMjZGOTYzOTIwMDFDMUM0MCAvKiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAq
LywKIAkJCQlGNDhCQjhERjI2Rjk2MzkyMDAxQzFDNDAgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5oICovLAogCQkJCUY0NTFDMTAwMjcwM0Q4NTMwMDJCQTAzQiAvKiBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA0MTljZTc2NDVjNjBkYjlkN2EyNjY1MDc3NDEyNGU3
ZmQ4MjdhN2EuLjY3NTUyZWIxNjE0YzYyZWI4OWE4NmZhYTY4MGYzMDdkZjljZmM3MDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0xMC0xMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcnMgUGFydCA5OiBGaW5pc2ggbWlncmF0aW5nIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg0MDE1NTg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMC0xMSAgRGllZ28g
UGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3
ZWQgYnVpbGQgZml4LiBGaXggYnVpbGQgZm9yIERlYmlhbiAxMCAoQnVzdGVyKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcAppbmRleCA1YTYyZGFkOGFhY2QwODBhY2Y0YmM2MzU0M2E4N2VkOTQ0NjNhNGJi
Li41MGUxNTNiYjQwMWFjZjM2ZjY3Mjk3MjAwNGQ3N2MzYTlmYzZiMDNlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcApAQCAtNzMsNyArNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxh
eVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAKICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAgICAgUmVz
b3VyY2VIZWFwIHJlc291cmNlSGVhcDsKKyAgICAgICAgUmVzb3VyY2VIZWFwSW1wbCByZXNvdXJj
ZUhlYXA7CiAgICAgICAgIHJlc291cmNlSGVhcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBp
bWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBSZXBsYXllciByZXBsYXll
ciB7IGNvbnRleHQsIGxpc3QsICZyZXNvdXJjZUhlYXAgfTsK
</data>
<flag name="review"
          id="464995"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440980</attachid>
            <date>2021-10-12 14:18:11 -0700</date>
            <delta_ts>2021-10-12 14:20:49 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-231414-20211012141810.patch</filename>
            <type>text/plain</type>
            <size>28010</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmEyZjUxODYzNTExYjBi
MTJhYzE5ZTQzNzhiZjRhZmFkMWQ5OTQyYS4uY2NkMWJiMmRhOGI3OGY3ODE0N2UyM2I1Nzc5Y2Fk
ZjczYzgyZTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZpbmlzaCBt
aWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0ZSBh
IGJ1bmNoIG9mIHRoZSBtZXRob2RzIG9mIFJlc291cmNlSGVhcEltcGwgYmVjYXVzZSB0aGV5IGFy
ZSBvbmx5IHVzZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9jZXNzLXNwZWNpZmljIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmdldEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1v
dmVGb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMiAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBCb3JkZXJzIGFy
ZSBub3QgZHJhd24gd2hlbiB1c2luZyBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGNhYTMzZTY0NTZlODE5YTMzOTg3YTU5M2JiNTEyMzIwYmU4ODQ1NjYuLmU1OWNhNGJkZTY0
YTVlOTg1YmVmZjMxODM0MDM5ZTg0ZGJiNDgyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMjEtMTAtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJz
IFBhcnQgOTogRmluaXNoIG1pZ3JhdGluZyBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDE0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAx
NTU4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAg
ICBOb3cgdGhhdCBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwIGV4aXN0cywgd2UgY2FuIG1ha2Ug
YSBSZXNvdXJjZUhlYXAgc3ViY2xhc3Mgc3BlY2lmaWNhbGx5IGZvcgorICAgICAgICB0aGUgR1BV
IHByb2Nlc3MuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzIGhvbGRzIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgaW5zdGVhZCBvZiBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1F1
YWxpZmllZFJlc291cmNlSGVhcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVk
UmVzb3VyY2VIZWFwOjpRdWFsaWZpZWRSZXNvdXJjZUhlYXApOgorICAgICAgICAoV2ViS2l0OjpR
dWFsaWZpZWRSZXNvdXJjZUhlYXA6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJl
c291cmNlSGVhcDo6Z2V0SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFs
aWZpZWRSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpoYXNJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6Omhhc0ZvbnQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OnJlbW92ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6cmVtb3ZlRm9u
dCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6ZGVsZXRlQWxsRm9u
dHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNl
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6
Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6bWF5YmVSZW1vdmVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMjEtMTAtMTIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgU2FuZGJveCBjb21wbGV4aXR5IGFuZCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggODZmMzMwZWQ1OWQzZGQwZjQ4MzExOWU0
MTY0OTlmNTc1MzhkYjEyZC4uNWNiMTNkZGJiYmNjMWU3NjU0MDQ2OTkzZjlkYjAyYmU5YWM5NzRh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFu
ZGxlKTsKIAotICAgIFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKKyAgICBMb2NhbFJlc291
cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4g
bV9pdGVtczsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJ
dGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAppbmRleCA5NWUx
ODU1Yzc1MjM1OTYzYzMxOGMzZDQ1MTg3MDRlOTg5Y2MwMzI4Li5lNmM2Mjc4YzEzMzhmMWQ0YWRm
Njg5ZjU3OTBhMWZhNjc3NzE5ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXNvdXJjZUhlYXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXNvdXJjZUhlYXAuaApAQCAtMzYsODQgKzM2LDQ5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKIGNsYXNzIFJlc291cmNlSGVhcCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UmVzb3VyY2VIZWFwKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBJbWFn
ZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGb250KiBnZXRGb250
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgPSAwOworfTsKKworY2xhc3MgTG9j
YWxSZXNvdXJjZUhlYXAgOiBwdWJsaWMgUmVzb3VyY2VIZWFwIHsKIHB1YmxpYzoKICAgICB2b2lk
IGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiAgICAgewotICAgICAgICBpZiAo
bV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPEltYWdl
QnVmZmVyPihXVEZNb3ZlKGltYWdlQnVmZmVyKSkpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICAr
K21faW1hZ2VCdWZmZXJDb3VudDsKKyAgICAgICAgbV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIH0KIAogICAgIHZv
aWQgYWRkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKICAgICB7Ci0gICAgICAgIGlmIChtX3Jl
c291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8TmF0aXZlSW1h
Z2U+KFdURk1vdmUoaW1hZ2UpKSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICsrbV9uYXRpdmVJ
bWFnZUNvdW50OworICAgICAgICBtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPEZvbnQ+
JiYgZm9udCkKICAgICB7Ci0gICAgICAgIGlmIChtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8Rm9udD4oV1RGTW92ZShmb250KSkpLmlzTmV3RW50cnkp
Ci0gICAgICAgICAgICArK21fZm9udENvdW50OworICAgICAgICBtX3Jlc291cmNlcy5hZGQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICBJbWFnZUJ1ZmZlciogZ2V0SW1h
Z2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8SW1hZ2VCdWZm
ZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgTmF0aXZlSW1h
Z2UqIGdldE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgTmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
IGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0PE5hdGl2ZUltYWdlPihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIEZvbnQqIGdldEZvbnQoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29u
c3QKKyAgICBGb250KiBnZXRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4g
Z2V0PEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgYm9v
bCBoYXNJbWFnZUJ1ZmZlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1
ZmZlckNvdW50OwotICAgIH0KLQotICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKLSAgICB9Ci0KLSAgICBib29s
IGhhc0ZvbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9udENvdW50OwotICAg
IH0KLQotICAgIGJvb2wgcmVtb3ZlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBy
ZW1vdmU8SW1hZ2VCdWZmZXI+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9pbWFnZUJ1
ZmZlckNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZU5hdGl2ZUltYWdlKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgewot
ICAgICAgICByZXR1cm4gcmVtb3ZlPE5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIG1fbmF0aXZlSW1hZ2VDb3VudCk7Ci0gICAgfQotCi0gICAgYm9vbCByZW1vdmVGb250
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Ci0gICAgewotICAgICAgICByZXR1cm4gcmVtb3ZlPEZvbnQ+KHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgbV9mb250Q291bnQpOwotICAgIH0KLQogICAgIHZvaWQgY2xlYXIoKQogICAgIHsK
ICAgICAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlckNvdW50
ID0gMDsKLSAgICAgICAgbV9uYXRpdmVJbWFnZUNvdW50ID0gMDsKLSAgICAgICAgbV9mb250Q291
bnQgPSAwOwotICAgIH0KLQotICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKQotICAgIHsKLSAgICAg
ICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJlc291cmNlKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8Rm9udD4+KHJlc291
cmNlLnZhbHVlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZm9udENvdW50ID0gMDsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xMjMsMzAgKzg4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3Jlc291cmNlcy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNlcy5lbmQoKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
UHRyPFQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8VD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7
Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCByZW1vdmUoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdW5z
aWduZWQmIGNvdW50ZXIpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJj
ZXMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgICAgICBpZiAoaXRlcmF0
b3IgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8VD4+KGl0ZXJhdG9yLT52YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9y
ZXNvdXJjZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAg
ICAgIC0tY291bnRlcjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgQVNTRVJUKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKICAgICB9CiAK
LSAgICB1c2luZyBSZXNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPEltYWdlQnVmZmVyPiwgUmVmUHRy
PE5hdGl2ZUltYWdlPiwgUmVmUHRyPEZvbnQ+PjsKKyAgICB1c2luZyBSZXNvdXJjZSA9IFZhcmlh
bnQ8c3RkOjptb25vc3RhdGUsIFJlZjxJbWFnZUJ1ZmZlcj4sIFJlZjxOYXRpdmVJbWFnZT4sIFJl
ZjxGb250Pj47CiAgICAgSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291
cmNlPiBtX3Jlc291cmNlczsKLSAgICB1bnNpZ25lZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07
Ci0gICAgdW5zaWduZWQgbV9uYXRpdmVJbWFnZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIG1f
Zm9udENvdW50IHsgMCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
MTQxOWQ0NTY5NzRhZjcyYWNhNmRhNDU4ZDVkZjEzNDMyYjUyYWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFw
LmgKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVzb3VyY2VIZWFwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9G
b250Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFF1YWxpZmllZFJlc291cmNlSGVhcCA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVz
b3VyY2VIZWFwIHsKK3B1YmxpYzoKKyAgICBRdWFsaWZpZWRSZXNvdXJjZUhlYXAoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV93ZWJQ
cm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGltYWdlQnVm
ZmVyKQorICAgIHsKKyAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RG
TW92ZShpbWFnZUJ1ZmZlciksIG1faW1hZ2VCdWZmZXJDb3VudCk7CisgICAgfQorCisgICAgdm9p
ZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmIGltYWdlKQorICAgIHsK
KyAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSks
IG1fbmF0aXZlSW1hZ2VDb3VudCk7CisgICAgfQorCisgICAgdm9pZCBhZGQoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVm
PFdlYkNvcmU6OkZvbnQ+JiYgZm9udCkKKyAgICB7CisgICAgICAgIGFkZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCksIG1fZm9udENvdW50KTsKKyAgICB9CisKKyAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+KHsgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAg
IH0KKworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBj
b25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4oeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIg
fSk7CisgICAgfQorCisgICAgV2ViQ29yZTo6Rm9udCogZ2V0Rm9udChXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpGb250Pih7IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisK
KyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZ2V0SW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+KHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2Uq
IGdldE5hdGl2ZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IH0KKworICAgIFdlYkNvcmU6OkZvbnQqIGdldEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6Rm9udD4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBib29sIGhhc0ltYWdlQnVmZmVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGNoZWNrSW52YXJpYW50cygpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlckNv
dW50OworICAgIH0KKworICAgIGJvb2wgaGFzTmF0aXZlSW1hZ2UoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgY2hlY2tJbnZhcmlhbnRzKCk7CisgICAgICAgIHJldHVybiBtX25hdGl2ZUltYWdlQ291
bnQ7CisgICAgfQorCisgICAgYm9vbCBoYXNGb250KCkgY29uc3QKKyAgICB7CisgICAgICAgIGNo
ZWNrSW52YXJpYW50cygpOworICAgICAgICByZXR1cm4gbV9mb250Q291bnQ7CisgICAgfQorCisg
ICAgYm9vbCByZW1vdmVJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJlbW92ZTxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBtX2ltYWdlQnVmZmVyQ291bnQpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1h
Z2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiByZW1vdmU8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9uYXRpdmVJbWFnZUNvdW50KTsK
KyAgICB9CisKKyAgICBib29sIHJlbW92ZUZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiByZW1vdmU8V2ViQ29yZTo6Rm9udD4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBt
X2ZvbnRDb3VudCk7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVBbGxGb250cygpCisgICAgewor
ICAgICAgICBjaGVja0ludmFyaWFudHMoKTsKKworICAgICAgICBpZiAoIW1fZm9udENvdW50KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVzb3VyY2VzLnJlbW92ZUlmKFtdIChj
b25zdCBhdXRvJiByZXNvdXJjZSkgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFdlYkNvcmU6OkZvbnQ+PihyZXNvdXJjZS52YWx1ZSk7CisgICAgICAgIH0p
OworCisgICAgICAgIG1fZm9udENvdW50ID0gMDsKKworICAgICAgICBjaGVja0ludmFyaWFudHMo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9p
ZCBhZGQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgUmVmPFQ+JiYgb2JqZWN0LCB1bnNpZ25lZCYgY291bnRlcikKKyAgICB7
CisgICAgICAgIGNoZWNrSW52YXJpYW50cygpOworCisgICAgICAgIEFTU0VSVChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFdURk1vdmUob2JqZWN0KSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICsrY291
bnRlcjsKKworICAgICAgICBjaGVja0ludmFyaWFudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgICBUKiBnZXQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAg
IGNoZWNrSW52YXJpYW50cygpOworCisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNl
cy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdGVyYXRv
ciA9PSBtX3Jlc291cmNlcy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1
ZSkpOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpLnB0
cigpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIGJvb2wgcmVtb3Zl
KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgY2hlY2tJbnZhcmlh
bnRzKCk7CisKKyAgICAgICAgaWYgKCFjb3VudGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlcy5maW5kKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNlcy5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2VzLnJlbW92ZShpdGVy
YXRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICAtLWNvdW50ZXI7CisKKyAg
ICAgICAgY2hlY2tJbnZhcmlhbnRzKCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICB2b2lkIGNoZWNrSW52YXJpYW50cygpIGNvbnN0CisgICAgeworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgICAgIHVuc2lnbmVkIGltYWdlQnVmZmVyQ291bnQgPSAwOworICAgICAgICB1
bnNpZ25lZCBuYXRpdmVJbWFnZUNvdW50ID0gMDsKKyAgICAgICAgdW5zaWduZWQgZm9udENvdW50
ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9yZXNvdXJjZXMpIHsKKyAg
ICAgICAgICAgIFdURjo6c3dpdGNoT24ocGFpci52YWx1ZSwgWyZdIChzdGQ6Om1vbm9zdGF0ZSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfSwg
WyZdIChjb25zdCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JikgeworICAgICAgICAgICAgICAg
ICsraW1hZ2VCdWZmZXJDb3VudDsKKyAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiYpIHsKKyAgICAgICAgICAgICAgICArK25hdGl2ZUltYWdlQ291bnQ7
CisgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYpIHsKKyAgICAg
ICAgICAgICAgICArK2ZvbnRDb3VudDsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChpbWFnZUJ1ZmZlckNvdW50ID09IG1faW1hZ2VCdWZmZXJDb3VudCk7CisgICAg
ICAgIEFTU0VSVChuYXRpdmVJbWFnZUNvdW50ID09IG1fbmF0aXZlSW1hZ2VDb3VudCk7CisgICAg
ICAgIEFTU0VSVChmb250Q291bnQgPT0gbV9mb250Q291bnQpOworICAgICAgICBBU1NFUlQobV9y
ZXNvdXJjZXMuc2l6ZSgpID09IG1faW1hZ2VCdWZmZXJDb3VudCArIG1fbmF0aXZlSW1hZ2VDb3Vu
dCArIG1fZm9udENvdW50KTsKKyNlbmRpZgorICAgIH0KKworICAgIHVzaW5nIFJlc291cmNlID0g
VmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiwgUmVmPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiwgUmVmPFdlYkNvcmU6OkZvbnQ+PjsKKyAgICBIYXNoTWFwPFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2U+IG1fcmVzb3VyY2Vz
OworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7
CisgICAgdW5zaWduZWQgbV9pbWFnZUJ1ZmZlckNvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1f
bmF0aXZlSW1hZ2VDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2ZvbnRDb3VudCB7IDAgfTsK
KworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
CmluZGV4IGVlYmFmZjcwZDk3ZWRlZGJiZDliODk0Y2M4ODYyZjNhMDAwMmQ0Y2MuLmFmOWU0Mjg2
OWMyYTg3YTIxY2MxNWRjODlhNzNkNTkzZGNhMDcyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAg
LTMyLDEzICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKFByb2Nlc3NJ
ZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQotICAgIDogbV93ZWJQcm9jZXNzSWRlbnRp
Zmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICA6IG1fcmVzb3VyY2VIZWFwKHdlYlByb2Nl
c3NJZGVudGlmaWVyKQogewogfQogCiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJj
ZUNhY2hlKFJlbW90ZVJlc291cmNlQ2FjaGUmJiBvdGhlcikKLSAgICA6IG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIob3RoZXIubV93ZWJQcm9jZXNzSWRlbnRpZmllcikKLSAgICAsIG1fcmVzb3VyY2VI
ZWFwKFdURk1vdmUob3RoZXIubV9yZXNvdXJjZUhlYXApKQorICAgIDogbV9yZXNvdXJjZUhlYXAo
V1RGTW92ZShvdGhlci5tX3Jlc291cmNlSGVhcCkpCiAgICAgLCBtX3Jlc291cmNlVXNlQ291bnRl
cnMoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlVXNlQ291bnRlcnMpKQogewogICAgIHVwZGF0ZUhh
c0FjdGl2ZURyYXdhYmxlcygpOwpAQCAtNDcsOCArNDYsNyBAQCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpSZW1vdGVSZXNvdXJjZUNhY2hlKFJlbW90ZVJlc291cmNlQ2FjaGUmJiBvdGhlcikKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSA9PSBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkpOwotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX3Jlc291cmNlSGVh
cC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdl
QnVmZmVyKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxl
cygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CkBAIC01NiwxNSArNTQsMTMgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgUXVhbGkKIAog
SW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHJldHVybiBt
X3Jlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
b2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXRJbWFnZUJ1ZmZlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2Ut
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRp
Zmllcik7Ci0gICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5vYmplY3QoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKICAgICB1cGRhdGVIYXNB
Y3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtNzIsMjIgKzY4LDIwIEBAIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1
YWxpZmllZFJlCiAKIE5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRp
dmVJbWFnZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdAogewotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsK
LSAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0TmF0
aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCwgUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGZvbnQtPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmll
cik7Ci0gICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSwgV1RGTW92ZShmb250KSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShmb250KSk7CiAKICAgICBlbnN1cmVSZXNvdXJj
ZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogRm9udCogUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAogewotICAgIHJldHVy
biBtX3Jlc291cmNlSGVhcC5nZXRGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmpl
Y3QoKSk7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEZvbnQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjplbnN1cmVSZXNv
dXJjZVVzZUNvdW50ZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE0NywxMiArMTQxLDEyIEBAIGJvb2wgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpCiAKICAgICBtX3Jlc291cmNlVXNlQ291bnRlcnMucmVtb3ZlKGl0ZXJhdG9y
KTsKIAotICAgIGlmIChtX3Jlc291cmNlSGVhcC5yZW1vdmVJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpCi0gICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJl
bW92ZU5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpIHsK
KyAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgICAgICB8fCBtX3Jlc291cmNlSGVhcC5yZW1vdmVOYXRpdmVJbWFn
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2
ZURyYXdhYmxlcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKG1fcmVz
b3VyY2VIZWFwLnJlbW92ZUZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgp
KSkKKyAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVtb3ZlRm9udChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENhY2hpbmcgdGhlIHJl
bW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmgKaW5kZXggMjAxNjIyZGRkN2UwZTU1ZDY4MzBmZGU1NjM1ZGMwYTc1MzAwN2M1
Mi4uYTgxNDFjMmFkNDM0MGNkYTViZWVkYmE3ZTA2NGYwN2UyNTNiNDNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVh
bGlmaWVkUmVzb3VyY2VIZWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2Uu
aD4KQEAgLTg1LDEyICs4NiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVIYXNBY3Rp
dmVEcmF3YWJsZXMoKTsKIAotICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7Ci0KLSAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFw
IG1fcmVzb3VyY2VIZWFwOwotICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzQWN0aXZlRHJhd2Fi
bGVzIHsgZmFsc2UgfTsKKyAgICBRdWFsaWZpZWRSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7
CiAKICAgICBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwIG1fcmVzb3VyY2VVc2VDb3VudGVyczsKKwor
ICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1faGFzQWN0aXZlRHJhd2FibGVzIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWIzMmViYTIyMDhhNGQ4NDljNDU3MDcxYmNhNDM4
OTYyNTIxNzBlNS4uMjg0Yzk4ZThmOGM2NWJmMTM1MzcwNzE3YTMzNDhhYjY3N2Y2ZWQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
MDk4LDYgKzMwOTgsNyBAQAogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yVUlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Ykluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMUNCRjkwMTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNG
MThGM0UyNkJCNUQ5MDAwNEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IExvZ0luaXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUQwNTMwQzkyNThFQUI0NDAwRTQzNkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1w
bGlzdC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3Qu
cHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTEwOCw2ICs5MTA5LDcgQEAKIAkJ
CQlGNDA5NENCQjI1NTMwNEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAq
LywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlci5oICovLAogCQkJCTFDQzU0QUZEMjcwRjk2NTQwMDVCRjhCRSAvKiBRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLywKKwkJCQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1
N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8sCiAJCQkJRjQ4QkI4RTAyNkY5NjM5MjAw
MUMxQzQwIC8qIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCUY0OEJCOERG
MjZGOTYzOTIwMDFDMUM0MCAvKiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJ
RjQ1MUMxMDAyNzAzRDg1MzAwMkJBMDNCIC8qIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVz
c2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOTU0ZTQyN2NhNmFlNTlmMzk0OWQzZWY0YmNiOGYwZDBjNWQ5NjI3MS4uZDA0OGNk
ZmE0OGNjZjQ3ZmFkZWUxYWRkMWQ3ZTM0NDliZDM1NzA0YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTEy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZp
bmlzaCBtaWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTEyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEJvcmRlcnMgYXJlIG5vdCBkcmF3biB3aGVu
IHVzaW5nIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5k
ZXggNWE2MmRhZDhhYWNkMDgwYWNmNGJjNjM1NDNhODdlZDk0NDYzYTRiYi4uZDg0NmMwMjVlMGRj
ZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAg
LTczLDcgKzczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jl
c291cmNlKQogCiAgICAgewogICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Ci0gICAgICAgIFJlc291cmNlSGVhcCByZXNv
dXJjZUhlYXA7CisgICAgICAgIExvY2FsUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsKICAgICAg
ICAgcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwogCiAgICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwg
bGlzdCwgJnJlc291cmNlSGVhcCB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440985</attachid>
            <date>2021-10-12 14:36:06 -0700</date>
            <delta_ts>2021-10-12 15:05:02 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-231414-20211012143605.patch</filename>
            <type>text/plain</type>
            <size>28087</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZmMzZhMjg4YjE2MTNh
YjgyMTczNjkyZmNiNTEyN2Q0OTE1NzcyZi4uZDQ3NmJiYTA2N2MzYzU2YmY1NGQ2NDI4ZWFmNjgx
NzExOGZhYjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZpbmlzaCBt
aWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0ZSBh
IGJ1bmNoIG9mIHRoZSBtZXRob2RzIG9mIFJlc291cmNlSGVhcEltcGwgYmVjYXVzZSB0aGV5IGFy
ZSBvbmx5IHVzZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9jZXNzLXNwZWNpZmljIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmdldEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1v
dmVGb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JvbGxpbmcg
dGhyZWFkIGFuaW1hdGlvbnMgbmVlZCB0byBjb21taXQgbGF5ZXJzIG9uIHRoZSBzY3JvbGxpbmcg
dGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDcxMmRhYWUwNzdlM2RiZDNiMjg2NDRkMDBhZmNhMTRhYmRmYzAw
MGYuLmM4ZjliODM4N2Y0NDg0NmE0MjI5ZmU3YTU0YWE1YzYyNzg0NDcwMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMjEtMTAtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXJzIFBhcnQgOTogRmluaXNoIG1pZ3JhdGluZyBSZW1vdGVSZXNvdXJjZUNh
Y2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDE0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDAxNTU4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWlkIEFib3UtSGFs
bGF3YS4KKworICAgICAgICBOb3cgdGhhdCBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwIGV4aXN0
cywgd2UgY2FuIG1ha2UgYSBSZXNvdXJjZUhlYXAgc3ViY2xhc3Mgc3BlY2lmaWNhbGx5IGZvcgor
ICAgICAgICB0aGUgR1BVIHByb2Nlc3MuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNz
IGhvbGRzIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgaW5z
dGVhZCBvZiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpRdWFsaWZpZWRSZXNvdXJjZUhlYXApOgorICAg
ICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmFkZCk6CisgICAgICAgIChXZWJL
aXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRGb250IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpoYXNJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzTmF0aXZl
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6Omhh
c0ZvbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OnJl
bW92ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFw
OjpyZW1vdmVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNl
SGVhcDo6cmVtb3ZlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVh
cDo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIG5lZWQgdG8gY29tbWl0IGxheWVycyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCA4NmYzMzBlZDU5ZDNkZDBmNDgzMTE5ZTQxNjQ5OWY1NzUzOGRi
MTJkLi41Y2IxM2RkYmJiY2MxZTc2NTQwNDY5OTNmOWRiMDJiZTlhYzk3NGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCi0gICAg
UmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOworICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVz
b3VyY2VIZWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAg
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOwog
ICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCmluZGV4IDQzNjY0OWEyN2JmNDhmMjFj
MGU5Y2VhYzljZGFlMDRmOGFmYWYyMGYuLjYzYzczNDlkOWQwYjVhOGI0OGM0MGZkZGI2ZGU2NWY4
NTEzYmQ5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5o
CkBAIC0zNiw4NCArMzYsNDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIAogY2xhc3MgUmVzb3VyY2VIZWFwIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5S
ZXNvdXJjZUhlYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyKiBnZXRJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBMb2NhbFJlc291cmNlSGVh
cCA6IHB1YmxpYyBSZXNvdXJjZUhlYXAgewogcHVibGljOgogICAgIHZvaWQgYWRkKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxJbWFn
ZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGlmIChtX3Jlc291cmNlcy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SW1hZ2VCdWZmZXI+KFdURk1v
dmUoaW1hZ2VCdWZmZXIpKSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICsrbV9pbWFnZUJ1ZmZl
ckNvdW50OworICAgICAgICBtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5h
dGl2ZUltYWdlPiYmIGltYWdlKQogICAgIHsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxOYXRpdmVJbWFnZT4oV1RGTW92ZShp
bWFnZSkpKS5pc05ld0VudHJ5KQotICAgICAgICAgICAgKyttX25hdGl2ZUltYWdlQ291bnQ7Cisg
ICAgICAgIG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4mJiBmb250KQogICAg
IHsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlZlB0cjxGb250PihXVEZNb3ZlKGZvbnQpKSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAg
ICsrbV9mb250Q291bnQ7CisgICAgICAgIG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKiBn
ZXRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSBjb25zdAorICAgIEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZl
SW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgY29uc3QKKyAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgRm9udCogZ2V0Rm9udChSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIEZvbnQq
IGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8Rm9udD4ocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBib29sIGhhc0ltYWdlQnVm
ZmVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyQ291bnQ7Ci0g
ICAgfQotCi0gICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZUNvdW50OwotICAgIH0KLQotICAgIGJvb2wgaGFzRm9udCgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mb250Q291bnQ7Ci0gICAgfQotCi0gICAgYm9v
bCByZW1vdmVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbW92ZTxJbWFnZUJ1
ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVyQ291bnQpOwot
ICAgIH0KLQotICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biByZW1vdmU8TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9uYXRp
dmVJbWFnZUNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZUZvbnQoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiByZW1vdmU8Rm9udD4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2Zv
bnRDb3VudCk7Ci0gICAgfQotCiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBtX3Jl
c291cmNlcy5jbGVhcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVyQ291bnQgPSAwOwotICAgICAg
ICBtX25hdGl2ZUltYWdlQ291bnQgPSAwOwotICAgICAgICBtX2ZvbnRDb3VudCA9IDA7Ci0gICAg
fQotCi0gICAgdm9pZCBkZWxldGVBbGxGb250cygpCi0gICAgewotICAgICAgICBtX3Jlc291cmNl
cy5yZW1vdmVJZihbXSAoY29uc3QgYXV0byYgcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGb250Pj4ocmVzb3VyY2UudmFsdWUpOwot
ICAgICAgICB9KTsKLSAgICAgICAgbV9mb250Q291bnQgPSAwOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTEyMywzMCArODgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1f
cmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8VD4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIHJlbW92ZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1bnNpZ25lZCYgY291bnRl
cikKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlcy5maW5kKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291
cmNlcy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlcy5yZW1v
dmUoaXRlcmF0b3IpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgLS1jb3VudGVy
OwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOwogICAgIH0KIAotICAgIHVzaW5nIFJl
c291cmNlID0gVmFyaWFudDxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBSZWZQdHI8Rm9udD4+OworICAgIHVzaW5nIFJlc291cmNlID0gVmFyaWFudDxzdGQ6Om1vbm9z
dGF0ZSwgUmVmPEltYWdlQnVmZmVyPiwgUmVmPE5hdGl2ZUltYWdlPiwgUmVmPEZvbnQ+PjsKICAg
ICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2U+IG1fcmVzb3Vy
Y2VzOwotICAgIHVuc2lnbmVkIG1faW1hZ2VCdWZmZXJDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX25hdGl2ZUltYWdlQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9mb250Q291bnQgeyAw
IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUxNDE5ZDQ1Njk3NGFm
NzJhY2E2ZGE0NThkNWRmMTM0MzJiNTJhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApAQCAtMCwwICsx
LDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXVhbGlmaWVkUmVz
b3VyY2VIZWFwIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgewor
cHVibGljOgorICAgIFF1YWxpZmllZFJlc291cmNlSGVhcChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGFkZChR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCisgICAgewor
ICAgICAgICBhZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVm
ZmVyKSwgbV9pbWFnZUJ1ZmZlckNvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBhZGQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSwgbV9uYXRpdmVJbWFn
ZUNvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6Rm9u
dD4mJiBmb250KQorICAgIHsKKyAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV1RGTW92ZShmb250KSwgbV9mb250Q291bnQpOworICAgIH0KKworICAgIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4oeyByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAgfQorCisgICAgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPih7IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisK
KyAgICBXZWJDb3JlOjpGb250KiBnZXRGb250KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6OkZvbnQ+KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgIH0KKworICAgIFdlYkNvcmU6
OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdldDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1h
Z2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6TmF0
aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgV2Vi
Q29yZTo6Rm9udCogZ2V0Rm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdldDxXZWJDb3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
KworICAgIGJvb2wgaGFzSW1hZ2VCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJ
bnZhcmlhbnRzKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyQ291bnQ7CisgICAgfQor
CisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0CisgICAgeworICAgICAgICBjaGVja0lu
dmFyaWFudHMoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKKyAgICB9CisK
KyAgICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJbnZhcmlhbnRz
KCk7CisgICAgICAgIHJldHVybiBtX2ZvbnRDb3VudDsKKyAgICB9CisKKyAgICBib29sIHJlbW92
ZUltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPFdlYkNv
cmU6OkltYWdlQnVmZmVyPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1faW1hZ2VCdWZm
ZXJDb3VudCk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVOYXRpdmVJbWFnZShRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZTxXZWJDb3JlOjpOYXRpdmVJbWFnZT4ocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX25hdGl2ZUltYWdlQ291bnQpOworICAgIH0KKworICAg
IGJvb2wgcmVtb3ZlRm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZTxX
ZWJDb3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fZm9udENvdW50KTsK
KyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCkKKyAgICB7CisgICAgICAgIGNoZWNr
SW52YXJpYW50cygpOworCisgICAgICAgIGlmICghbV9mb250Q291bnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJl
c291cmNlKSB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
V2ViQ29yZTo6Rm9udD4+KHJlc291cmNlLnZhbHVlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
bV9mb250Q291bnQgPSAwOworCisgICAgICAgIGNoZWNrSW52YXJpYW50cygpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8VD4mJiBvYmplY3QsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgY2hl
Y2tJbnZhcmlhbnRzKCk7CisKKyAgICAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAg
ICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RG
TW92ZShvYmplY3QpKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgKytjb3VudGVyOworCisgICAg
ICAgIGNoZWNrSW52YXJpYW50cygpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIFQqIGdldChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJbnZhcmlh
bnRzKCk7CisKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3Vy
Y2VzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIEFTU0VSVChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSk7CisgICAgICAg
IHJldHVybiBXVEY6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgYm9vbCByZW1vdmUoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdW5z
aWduZWQmIGNvdW50ZXIpCisgICAgeworICAgICAgICBjaGVja0ludmFyaWFudHMoKTsKKworICAg
ICAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
YXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZXMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIC0tY291bnRlcjsKKworICAgICAgICBjaGVja0lu
dmFyaWFudHMoKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQg
Y2hlY2tJbnZhcmlhbnRzKCkgY29uc3QKKyAgICB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAg
ICAgdW5zaWduZWQgaW1hZ2VCdWZmZXJDb3VudCA9IDA7CisgICAgICAgIHVuc2lnbmVkIG5hdGl2
ZUltYWdlQ291bnQgPSAwOworICAgICAgICB1bnNpZ25lZCBmb250Q291bnQgPSAwOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlcykgeworICAgICAgICAgICAgV1RG
Ojpzd2l0Y2hPbihwYWlyLnZhbHVlLCBbJl0gKHN0ZDo6bW9ub3N0YXRlKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJl
ZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mKSB7CisgICAgICAgICAgICAgICAgKytpbWFnZUJ1ZmZl
ckNvdW50OworICAgICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1h
Z2U+JikgeworICAgICAgICAgICAgICAgICsrbmF0aXZlSW1hZ2VDb3VudDsKKyAgICAgICAgICAg
IH0sIFsmXSAoY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JikgeworICAgICAgICAgICAgICAgICsr
Zm9udENvdW50OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGlt
YWdlQnVmZmVyQ291bnQgPT0gbV9pbWFnZUJ1ZmZlckNvdW50KTsKKyAgICAgICAgQVNTRVJUKG5h
dGl2ZUltYWdlQ291bnQgPT0gbV9uYXRpdmVJbWFnZUNvdW50KTsKKyAgICAgICAgQVNTRVJUKGZv
bnRDb3VudCA9PSBtX2ZvbnRDb3VudCk7CisgICAgICAgIEFTU0VSVChtX3Jlc291cmNlcy5zaXpl
KCkgPT0gbV9pbWFnZUJ1ZmZlckNvdW50ICsgbV9uYXRpdmVJbWFnZUNvdW50ICsgbV9mb250Q291
bnQpOworI2VuZGlmCisgICAgfQorCisgICAgdXNpbmcgUmVzb3VyY2UgPSBWYXJpYW50PHN0ZDo6
bW9ub3N0YXRlLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+LCBSZWY8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+LCBSZWY8V2ViQ29yZTo6Rm9udD4+OworICAgIEhhc2hNYXA8UXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZT4gbV9yZXNvdXJjZXM7CisgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKKyAgICB1bnNpZ25l
ZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9uYXRpdmVJbWFnZUNv
dW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZm9udENvdW50IHsgMCB9OworCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggZWViYWZm
NzBkOTdlZGVkYmJkOWI4OTRjYzg4NjJmM2EwMDAyZDRjYy4uYWY5ZTQyODY5YzJhODdhMjFjYzE1
ZGM4OWE3M2Q1OTNkY2EwNzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEy
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90
ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nl
c3NJZGVudGlmaWVyKQorICAgIDogbV9yZXNvdXJjZUhlYXAod2ViUHJvY2Vzc0lkZW50aWZpZXIp
CiB7CiB9CiAKIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3Rl
UmVzb3VyY2VDYWNoZSYmIG90aGVyKQotICAgIDogbV93ZWJQcm9jZXNzSWRlbnRpZmllcihvdGhl
ci5tX3dlYlByb2Nlc3NJZGVudGlmaWVyKQotICAgICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShv
dGhlci5tX3Jlc291cmNlSGVhcCkpCisgICAgOiBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVy
Lm1fcmVzb3VyY2VIZWFwKSkKICAgICAsIG1fcmVzb3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90
aGVyLm1fcmVzb3VyY2VVc2VDb3VudGVycykpCiB7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2Fi
bGVzKCk7CkBAIC00Nyw4ICs0Niw3IEBAIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291
cmNlQ2FjaGUoUmVtb3RlUmVzb3VyY2VDYWNoZSYmIG90aGVyKQogdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVj
dCgpID09IGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAg
QVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAg
ICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBl
bnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAg
LTU2LDE1ICs1NCwxMyBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZm
ZXIoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBRdWFsaQogCiBJbWFnZUJ1ZmZlciog
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsK
LSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFw
LmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7Cisg
ICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFnZS0+cmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBt
X3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxl
cygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CkBAIC03MiwyMiArNjgsMjAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmUKIAog
TmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHJldHVybiBt
X3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
b2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gZm9udC0+cmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX3Jl
c291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZN
b3ZlKGZvbnQpKTsKKyAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiBGb250KiBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZWRGb250KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VI
ZWFwLmdldEZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmVuc3VyZVJlc291cmNlVXNlQ291bnRl
cihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQpAQCAtMTQ3LDEyICsxNDEsMTIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjptYXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmkK
IAogICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYg
KG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSkKLSAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1h
Z2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkgeworICAgIGlmIChtX3Jl
c291cmNlSGVhcC5yZW1vdmVJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZU5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVt
b3ZlRm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmICht
X3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNl
IHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApp
bmRleCAyMDE2MjJkZGQ3ZTBlNTVkNjgzMGZkZTU2MzVkYzBhNzUzMDA3YzUyLi5hODE0MWMyYWQ0
MzQwY2RhNWJlZWRiYTdlMDY0ZjA3ZTI1M2I0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZXNvdXJj
ZUhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgpAQCAtODUsMTIg
Kzg2LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygp
OwogCi0gICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmll
cjsKLQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhl
YXA7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9
OworICAgIFF1YWxpZmllZFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKIAogICAgIFJlc291
cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworCisgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkZTMxYzMwZDQ4YmZmYTNiYTkwZDg5NzdmMGMwYzFlZjZjNDI3ZDlkLi5k
MGI3NmJmNmM5Yzk3MzllMTNhOTc4ODNiYzc3YzQ5NmQ1YTRjYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMDAsNiArMzEwMCw3
IEBACiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlQ
cm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQ0JGOTAx
MjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYzRTI2QkI1RDkw
MDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9n
SW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDA1MzBD
OTI1OEVBQjQ0MDBFNDM2RjcgLyogY29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0LnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gImNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTEwLDYgKzkxMTEsNyBAQAogCQkJCUY0MDk0Q0JCMjU1
MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQw
OTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJ
CQkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oICovLAorCQkJCTFDQkY5MDEyMjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFsaWZp
ZWRSZXNvdXJjZUhlYXAuaCAqLywKIAkJCQlGNDhCQjhFMDI2Rjk2MzkyMDAxQzFDNDAgLyogUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8sCiAJCQkJRjQ4QkI4REYyNkY5NjM5MjAwMUMx
QzQwIC8qIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLywKIAkJCQlGNDUxQzEwMDI3MDNE
ODUzMDAyQkEwM0IgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbiAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNTE0
NTdhYjNmODQxODQ3NjM4NWYyMWIyYTM0MjRjMTYxNzU4N2E1Li5mYzgyMDk3ZmE3OGM3MWIxOWI0
OGVhNWM5OWE1ZDk0OWU2YmU4Y2ZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTIgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVu
aXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgOTogRmluaXNoIG1pZ3JhdGlu
ZyBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
NDE0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAxNTU4ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgU1RMIGluc3RlYWQgb2YgV1RGOjpnZXRfaWYsIFdU
Rjo6TW9ub3N0YXRlLCBXVEY6OnZpc2l0LCBhbmQgV1RGOjpob2xkc19hbHRlcm5hdGl2ZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0
VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAppbmRleCA1YTYyZGFkOGFhY2QwODBhY2Y0YmM2MzU0M2E4N2VkOTQ0
NjNhNGJiLi5kODQ2YzAyNWUwZGNkOGNhODI5YjcxMjczZGFmMWY3MDdlOWQ5MmRkIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcApAQCAtNzMsNyArNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMs
IFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAKICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAg
ICAgUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsKKyAgICAgICAgTG9jYWxSZXNvdXJjZUhlYXAg
cmVzb3VyY2VIZWFwOwogICAgICAgICByZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVySWRlbnRp
ZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgUmVwbGF5ZXIg
cmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmcmVzb3VyY2VIZWFwIH07Cg==
</data>
<flag name="commit-queue"
          id="465099"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440992</attachid>
            <date>2021-10-12 15:05:43 -0700</date>
            <delta_ts>2021-10-12 15:05:43 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-231414-20211012150543.patch</filename>
            <type>text/plain</type>
            <size>28087</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZmMzZhMjg4YjE2MTNh
YjgyMTczNjkyZmNiNTEyN2Q0OTE1NzcyZi4uZDQ3NmJiYTA2N2MzYzU2YmY1NGQ2NDI4ZWFmNjgx
NzExOGZhYjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDk6IEZpbmlzaCBt
aWdyYXRpbmcgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTQxNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTU1ODQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgV2UgY2FuIGRlbGV0ZSBh
IGJ1bmNoIG9mIHRoZSBtZXRob2RzIG9mIFJlc291cmNlSGVhcEltcGwgYmVjYXVzZSB0aGV5IGFy
ZSBvbmx5IHVzZWQgaW4gdGhlCisgICAgICAgIEdQVSBQcm9jZXNzLXNwZWNpZmljIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlc291cmNlSGVhcDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXNvdXJjZUhlYXA6OmdldEltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhl
YXA6OmdldEZvbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlc291cmNlSGVhcDo6aGFzSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVhcDo6aGFzTmF0aXZlSW1hZ2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlc291cmNlSGVh
cDo6aGFzRm9udCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1vdmVOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwOjpyZW1v
dmVGb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJj
ZUhlYXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXNvdXJjZUhlYXA6OmRlbGV0ZUFsbEZvbnRzKTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JvbGxpbmcg
dGhyZWFkIGFuaW1hdGlvbnMgbmVlZCB0byBjb21taXQgbGF5ZXJzIG9uIHRoZSBzY3JvbGxpbmcg
dGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDcxMmRhYWUwNzdlM2RiZDNiMjg2NDRkMDBhZmNhMTRhYmRmYzAw
MGYuLmM4ZjliODM4N2Y0NDg0NmE0MjI5ZmU3YTU0YWE1YzYyNzg0NDcwMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMjEtMTAtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXJzIFBhcnQgOTogRmluaXNoIG1pZ3JhdGluZyBSZW1vdGVSZXNvdXJjZUNh
Y2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDE0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDAxNTU4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWlkIEFib3UtSGFs
bGF3YS4KKworICAgICAgICBOb3cgdGhhdCBEaXNwbGF5TGlzdDo6UmVzb3VyY2VIZWFwIGV4aXN0
cywgd2UgY2FuIG1ha2UgYSBSZXNvdXJjZUhlYXAgc3ViY2xhc3Mgc3BlY2lmaWNhbGx5IGZvcgor
ICAgICAgICB0aGUgR1BVIHByb2Nlc3MuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNz
IGhvbGRzIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgaW5z
dGVhZCBvZiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpRdWFsaWZpZWRSZXNvdXJjZUhlYXApOgorICAg
ICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmFkZCk6CisgICAgICAgIChXZWJL
aXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OmdldE5hdGl2ZUltYWdlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpnZXRGb250IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFwOjpoYXNJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVhcDo6aGFzTmF0aXZl
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6Omhh
c0ZvbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6OnJl
bW92ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VIZWFw
OjpyZW1vdmVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNl
SGVhcDo6cmVtb3ZlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSGVh
cDo6ZGVsZXRlQWxsRm9udHMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6
OlJlbW90ZVJlc291cmNlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIG5lZWQgdG8gY29tbWl0IGxheWVycyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCA4NmYzMzBlZDU5ZDNkZDBmNDgzMTE5ZTQxNjQ5OWY1NzUzOGRi
MTJkLi41Y2IxM2RkYmJiY2MxZTc2NTQwNDY5OTNmOWRiMDJiZTlhYzk3NGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCi0gICAg
UmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOworICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVz
b3VyY2VIZWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAg
IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOwog
ICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXNvdXJjZUhlYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCmluZGV4IDQzNjY0OWEyN2JmNDhmMjFj
MGU5Y2VhYzljZGFlMDRmOGFmYWYyMGYuLjYzYzczNDlkOWQwYjVhOGI0OGM0MGZkZGI2ZGU2NWY4
NTEzYmQ5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlc291cmNlSGVhcC5o
CkBAIC0zNiw4NCArMzYsNDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIAogY2xhc3MgUmVzb3VyY2VIZWFwIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5S
ZXNvdXJjZUhlYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyKiBnZXRJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIE5hdGl2ZUltYWdlKiBnZXROYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZvbnQqIGdldEZvbnQoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBMb2NhbFJlc291cmNlSGVh
cCA6IHB1YmxpYyBSZXNvdXJjZUhlYXAgewogcHVibGljOgogICAgIHZvaWQgYWRkKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxJbWFn
ZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGlmIChtX3Jlc291cmNlcy5h
ZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SW1hZ2VCdWZmZXI+KFdURk1v
dmUoaW1hZ2VCdWZmZXIpKSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICsrbV9pbWFnZUJ1ZmZl
ckNvdW50OworICAgICAgICBtX3Jlc291cmNlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5h
dGl2ZUltYWdlPiYmIGltYWdlKQogICAgIHsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxOYXRpdmVJbWFnZT4oV1RGTW92ZShp
bWFnZSkpKS5pc05ld0VudHJ5KQotICAgICAgICAgICAgKyttX25hdGl2ZUltYWdlQ291bnQ7Cisg
ICAgICAgIG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICB2b2lkIGFkZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4mJiBmb250KQogICAg
IHsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlZlB0cjxGb250PihXVEZNb3ZlKGZvbnQpKSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAg
ICsrbV9mb250Q291bnQ7CisgICAgICAgIG1fcmVzb3VyY2VzLmFkZChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFdURk1vdmUoZm9udCkpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKiBn
ZXRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSBjb25zdAorICAgIEltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldDxJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZl
SW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgY29uc3QKKyAgICBOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QgZmluYWwK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgRm9udCogZ2V0Rm9udChSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIEZvbnQq
IGdldEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQ8Rm9udD4ocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBib29sIGhhc0ltYWdlQnVm
ZmVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyQ291bnQ7Ci0g
ICAgfQotCi0gICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9uYXRpdmVJbWFnZUNvdW50OwotICAgIH0KLQotICAgIGJvb2wgaGFzRm9udCgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mb250Q291bnQ7Ci0gICAgfQotCi0gICAgYm9v
bCByZW1vdmVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbW92ZTxJbWFnZUJ1
ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2ltYWdlQnVmZmVyQ291bnQpOwot
ICAgIH0KLQotICAgIGJvb2wgcmVtb3ZlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biByZW1vdmU8TmF0aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9uYXRp
dmVJbWFnZUNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZUZvbnQoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiByZW1vdmU8Rm9udD4ocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2Zv
bnRDb3VudCk7Ci0gICAgfQotCiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBtX3Jl
c291cmNlcy5jbGVhcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVyQ291bnQgPSAwOwotICAgICAg
ICBtX25hdGl2ZUltYWdlQ291bnQgPSAwOwotICAgICAgICBtX2ZvbnRDb3VudCA9IDA7Ci0gICAg
fQotCi0gICAgdm9pZCBkZWxldGVBbGxGb250cygpCi0gICAgewotICAgICAgICBtX3Jlc291cmNl
cy5yZW1vdmVJZihbXSAoY29uc3QgYXV0byYgcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxGb250Pj4ocmVzb3VyY2UudmFsdWUpOwot
ICAgICAgICB9KTsKLSAgICAgICAgbV9mb250Q291bnQgPSAwOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTEyMywzMCArODgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1f
cmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8VD4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIHJlbW92ZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1bnNpZ25lZCYgY291bnRl
cikKLSAgICB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlcy5maW5kKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291
cmNlcy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxUPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlcy5yZW1v
dmUoaXRlcmF0b3IpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgLS1jb3VudGVy
OwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkpOworICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOwogICAgIH0KIAotICAgIHVzaW5nIFJl
c291cmNlID0gVmFyaWFudDxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBSZWZQdHI8Rm9udD4+OworICAgIHVzaW5nIFJlc291cmNlID0gVmFyaWFudDxzdGQ6Om1vbm9z
dGF0ZSwgUmVmPEltYWdlQnVmZmVyPiwgUmVmPE5hdGl2ZUltYWdlPiwgUmVmPEZvbnQ+PjsKICAg
ICBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2U+IG1fcmVzb3Vy
Y2VzOwotICAgIHVuc2lnbmVkIG1faW1hZ2VCdWZmZXJDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX25hdGl2ZUltYWdlQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9mb250Q291bnQgeyAw
IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzlmMjNlMDg3NWYyZDBl
YjM4N2Q5NDEzNWJmNzdhZjExNjIxMzUxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhlYXAuaApAQCAtMCwwICsx
LDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3RSZXNvdXJjZUhlYXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXVhbGlmaWVkUmVz
b3VyY2VIZWFwIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgewor
cHVibGljOgorICAgIFF1YWxpZmllZFJlc291cmNlSGVhcChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGFkZChR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCisgICAgewor
ICAgICAgICBhZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVm
ZmVyKSwgbV9pbWFnZUJ1ZmZlckNvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBhZGQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSwgbV9uYXRpdmVJbWFn
ZUNvdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6Rm9u
dD4mJiBmb250KQorICAgIHsKKyAgICAgICAgYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV1RGTW92ZShmb250KSwgbV9mb250Q291bnQpOworICAgIH0KKworICAgIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdldDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4oeyByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAgfQorCisgICAgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2UqIGdldE5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPih7IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICB9CisK
KyAgICBXZWJDb3JlOjpGb250KiBnZXRGb250KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gZ2V0PFdlYkNvcmU6OkZvbnQ+KHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgIH0KKworICAgIFdlYkNvcmU6
OkltYWdlQnVmZmVyKiBnZXRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdldDxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4ocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogZ2V0TmF0aXZlSW1h
Z2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8V2ViQ29yZTo6TmF0
aXZlSW1hZ2U+KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgV2Vi
Q29yZTo6Rm9udCogZ2V0Rm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdldDxXZWJDb3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIH0K
KworICAgIGJvb2wgaGFzSW1hZ2VCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJ
bnZhcmlhbnRzKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyQ291bnQ7CisgICAgfQor
CisgICAgYm9vbCBoYXNOYXRpdmVJbWFnZSgpIGNvbnN0CisgICAgeworICAgICAgICBjaGVja0lu
dmFyaWFudHMoKTsKKyAgICAgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VDb3VudDsKKyAgICB9CisK
KyAgICBib29sIGhhc0ZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJbnZhcmlhbnRz
KCk7CisgICAgICAgIHJldHVybiBtX2ZvbnRDb3VudDsKKyAgICB9CisKKyAgICBib29sIHJlbW92
ZUltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gcmVtb3ZlPFdlYkNv
cmU6OkltYWdlQnVmZmVyPihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1faW1hZ2VCdWZm
ZXJDb3VudCk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmVOYXRpdmVJbWFnZShRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZTxXZWJDb3JlOjpOYXRpdmVJbWFnZT4ocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX25hdGl2ZUltYWdlQ291bnQpOworICAgIH0KKworICAg
IGJvb2wgcmVtb3ZlRm9udChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZTxX
ZWJDb3JlOjpGb250PihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fZm9udENvdW50KTsK
KyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCkKKyAgICB7CisgICAgICAgIGNoZWNr
SW52YXJpYW50cygpOworCisgICAgICAgIGlmICghbV9mb250Q291bnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlSWYoW10gKGNvbnN0IGF1dG8mIHJl
c291cmNlKSB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
V2ViQ29yZTo6Rm9udD4+KHJlc291cmNlLnZhbHVlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
bV9mb250Q291bnQgPSAwOworCisgICAgICAgIGNoZWNrSW52YXJpYW50cygpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8VD4mJiBvYmplY3QsIHVuc2lnbmVkJiBjb3VudGVyKQorICAgIHsKKyAgICAgICAgY2hl
Y2tJbnZhcmlhbnRzKCk7CisKKyAgICAgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAg
ICAgICBpZiAobV9yZXNvdXJjZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RG
TW92ZShvYmplY3QpKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgKytjb3VudGVyOworCisgICAg
ICAgIGNoZWNrSW52YXJpYW50cygpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIFQqIGdldChRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tJbnZhcmlh
bnRzKCk7CisKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3Vy
Y2VzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIEFTU0VSVChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSk7CisgICAgICAg
IHJldHVybiBXVEY6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgYm9vbCByZW1vdmUoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdW5z
aWduZWQmIGNvdW50ZXIpCisgICAgeworICAgICAgICBjaGVja0ludmFyaWFudHMoKTsKKworICAg
ICAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
YXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFQ+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZXMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIC0tY291bnRlcjsKKworICAgICAgICBjaGVja0lu
dmFyaWFudHMoKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQg
Y2hlY2tJbnZhcmlhbnRzKCkgY29uc3QKKyAgICB7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAg
ICAgdW5zaWduZWQgaW1hZ2VCdWZmZXJDb3VudCA9IDA7CisgICAgICAgIHVuc2lnbmVkIG5hdGl2
ZUltYWdlQ291bnQgPSAwOworICAgICAgICB1bnNpZ25lZCBmb250Q291bnQgPSAwOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlcykgeworICAgICAgICAgICAgV1RG
Ojpzd2l0Y2hPbihwYWlyLnZhbHVlLCBbJl0gKHN0ZDo6bW9ub3N0YXRlKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IFJl
ZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mKSB7CisgICAgICAgICAgICAgICAgKytpbWFnZUJ1ZmZl
ckNvdW50OworICAgICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1h
Z2U+JikgeworICAgICAgICAgICAgICAgICsrbmF0aXZlSW1hZ2VDb3VudDsKKyAgICAgICAgICAg
IH0sIFsmXSAoY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JikgeworICAgICAgICAgICAgICAgICsr
Zm9udENvdW50OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGlt
YWdlQnVmZmVyQ291bnQgPT0gbV9pbWFnZUJ1ZmZlckNvdW50KTsKKyAgICAgICAgQVNTRVJUKG5h
dGl2ZUltYWdlQ291bnQgPT0gbV9uYXRpdmVJbWFnZUNvdW50KTsKKyAgICAgICAgQVNTRVJUKGZv
bnRDb3VudCA9PSBtX2ZvbnRDb3VudCk7CisgICAgICAgIEFTU0VSVChtX3Jlc291cmNlcy5zaXpl
KCkgPT0gbV9pbWFnZUJ1ZmZlckNvdW50ICsgbV9uYXRpdmVJbWFnZUNvdW50ICsgbV9mb250Q291
bnQpOworI2VuZGlmCisgICAgfQorCisgICAgdXNpbmcgUmVzb3VyY2UgPSBWYXJpYW50PHN0ZDo6
bW9ub3N0YXRlLCBSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+LCBSZWY8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+LCBSZWY8V2ViQ29yZTo6Rm9udD4+OworICAgIEhhc2hNYXA8UXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZT4gbV9yZXNvdXJjZXM7CisgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKKyAgICB1bnNpZ25l
ZCBtX2ltYWdlQnVmZmVyQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9uYXRpdmVJbWFnZUNv
dW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZm9udENvdW50IHsgMCB9OworCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggZWViYWZm
NzBkOTdlZGVkYmJkOWI4OTRjYzg4NjJmM2EwMDAyZDRjYy4uYWY5ZTQyODY5YzJhODdhMjFjYzE1
ZGM4OWE3M2Q1OTNkY2EwNzIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMzIsMTMgKzMyLDEy
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90
ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nl
c3NJZGVudGlmaWVyKQorICAgIDogbV9yZXNvdXJjZUhlYXAod2ViUHJvY2Vzc0lkZW50aWZpZXIp
CiB7CiB9CiAKIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3Rl
UmVzb3VyY2VDYWNoZSYmIG90aGVyKQotICAgIDogbV93ZWJQcm9jZXNzSWRlbnRpZmllcihvdGhl
ci5tX3dlYlByb2Nlc3NJZGVudGlmaWVyKQotICAgICwgbV9yZXNvdXJjZUhlYXAoV1RGTW92ZShv
dGhlci5tX3Jlc291cmNlSGVhcCkpCisgICAgOiBtX3Jlc291cmNlSGVhcChXVEZNb3ZlKG90aGVy
Lm1fcmVzb3VyY2VIZWFwKSkKICAgICAsIG1fcmVzb3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90
aGVyLm1fcmVzb3VyY2VVc2VDb3VudGVycykpCiB7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2Fi
bGVzKCk7CkBAIC00Nyw4ICs0Niw3IEBAIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291
cmNlQ2FjaGUoUmVtb3RlUmVzb3VyY2VDYWNoZSYmIG90aGVyKQogdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVj
dCgpID09IGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Ci0gICAg
QVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIG1fcmVzb3VyY2VIZWFwLmFkZChyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAg
ICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBl
bnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAg
LTU2LDE1ICs1NCwxMyBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZm
ZXIoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBRdWFsaQogCiBJbWFnZUJ1ZmZlciog
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsK
LSAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFw
LmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7Cisg
ICAgcmV0dXJuIG1fcmVzb3VyY2VIZWFwLmdldEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFnZS0+cmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBt
X3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgbV9yZXNvdXJjZUhlYXAuYWRkKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxl
cygpOwogCiAgICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CkBAIC03MiwyMiArNjgsMjAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmUKIAog
TmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHJldHVybiBt
X3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
b2JqZWN0KCkpOworICAgIHJldHVybiBtX3Jlc291cmNlSGVhcC5nZXROYXRpdmVJbWFnZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gZm9udC0+cmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBtX3Jl
c291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZN
b3ZlKGZvbnQpKTsKKyAgICBtX3Jlc291cmNlSGVhcC5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiBGb250KiBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjYWNoZWRGb250KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VI
ZWFwLmdldEZvbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICBy
ZXR1cm4gbV9yZXNvdXJjZUhlYXAuZ2V0Rm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmVuc3VyZVJlc291cmNlVXNlQ291bnRl
cihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQpAQCAtMTQ3LDEyICsxNDEsMTIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjptYXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmkK
IAogICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYg
KG1fcmVzb3VyY2VIZWFwLnJlbW92ZUltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSkKLSAgICAgICAgfHwgbV9yZXNvdXJjZUhlYXAucmVtb3ZlTmF0aXZlSW1h
Z2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkgeworICAgIGlmIChtX3Jl
c291cmNlSGVhcC5yZW1vdmVJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgICAgIHx8IG1fcmVzb3VyY2VIZWFwLnJlbW92ZU5hdGl2ZUltYWdlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAobV9yZXNvdXJjZUhlYXAucmVt
b3ZlRm9udChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmICht
X3Jlc291cmNlSGVhcC5yZW1vdmVGb250KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNl
IHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApp
bmRleCAyMDE2MjJkZGQ3ZTBlNTVkNjgzMGZkZTU2MzVkYzBhNzUzMDA3YzUyLi5hODE0MWMyYWQ0
MzQwY2RhNWJlZWRiYTdlMDY0ZjA3ZTI1M2I0M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZXNvdXJj
ZUhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgpAQCAtODUsMTIg
Kzg2LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygp
OwogCi0gICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmll
cjsKLQotICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhl
YXA7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9
OworICAgIFF1YWxpZmllZFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKIAogICAgIFJlc291
cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworCisgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9oYXNBY3RpdmVEcmF3YWJsZXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkZTMxYzMwZDQ4YmZmYTNiYTkwZDg5NzdmMGMwYzFlZjZjNDI3ZDlkLi5k
MGI3NmJmNmM5Yzk3MzllMTNhOTc4ODNiYzc3YzQ5NmQ1YTRjYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMDAsNiArMzEwMCw3
IEBACiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlQ
cm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQ0JGOTAx
MjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYzRTI2QkI1RDkw
MDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9n
SW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDA1MzBD
OTI1OEVBQjQ0MDBFNDM2RjcgLyogY29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0LnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gImNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTEwLDYgKzkxMTEsNyBAQAogCQkJCUY0MDk0Q0JCMjU1
MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJCTU1QUQw
OTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJ
CQkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oICovLAorCQkJCTFDQkY5MDEyMjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFsaWZp
ZWRSZXNvdXJjZUhlYXAuaCAqLywKIAkJCQlGNDhCQjhFMDI2Rjk2MzkyMDAxQzFDNDAgLyogUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8sCiAJCQkJRjQ4QkI4REYyNkY5NjM5MjAwMUMx
QzQwIC8qIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLywKIAkJCQlGNDUxQzEwMDI3MDNE
ODUzMDAyQkEwM0IgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbiAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNTE0
NTdhYjNmODQxODQ3NjM4NWYyMWIyYTM0MjRjMTYxNzU4N2E1Li5mYzgyMDk3ZmE3OGM3MWIxOWI0
OGVhNWM5OWE1ZDk0OWU2YmU4Y2ZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTIgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVu
aXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgOTogRmluaXNoIG1pZ3JhdGlu
ZyBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
NDE0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAxNTU4ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgU1RMIGluc3RlYWQgb2YgV1RGOjpnZXRfaWYsIFdU
Rjo6TW9ub3N0YXRlLCBXVEY6OnZpc2l0LCBhbmQgV1RGOjpob2xkc19hbHRlcm5hdGl2ZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0
VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAppbmRleCA1YTYyZGFkOGFhY2QwODBhY2Y0YmM2MzU0M2E4N2VkOTQ0
NjNhNGJiLi5kODQ2YzAyNWUwZGNkOGNhODI5YjcxMjczZGFmMWY3MDdlOWQ5MmRkIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcApAQCAtNzMsNyArNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMs
IFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAKICAgICB7CiAgICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICAg
ICAgUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsKKyAgICAgICAgTG9jYWxSZXNvdXJjZUhlYXAg
cmVzb3VyY2VIZWFwOwogICAgICAgICByZXNvdXJjZUhlYXAuYWRkKGltYWdlQnVmZmVySWRlbnRp
ZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgUmVwbGF5ZXIg
cmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0LCAmcmVzb3VyY2VIZWFwIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>