<?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>228225</bug_id>
          
          <creation_ts>2021-07-23 01:10:19 -0700</creation_ts>
          <short_desc>[GPU Process] Start tracking resource uses for ImageBuffers</short_desc>
          <delta_ts>2021-07-28 14:48:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>228222</dependson>
    
    <dependson>228495</dependson>
          <blocked>228216</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1779006</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-23 01:10:19 -0700</bug_when>
    <thetext>[GPU Process] Start tracking resource uses for ImageBuffers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779007</commentid>
    <comment_count>1</comment_count>
      <attachid>434073</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-23 01:16:53 -0700</bug_when>
    <thetext>Created attachment 434073
Patch for reviewing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779008</commentid>
    <comment_count>2</comment_count>
      <attachid>434074</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-23 01:17:58 -0700</bug_when>
    <thetext>Created attachment 434074
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779677</commentid>
    <comment_count>3</comment_count>
      <attachid>434268</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-26 21:23:26 -0700</bug_when>
    <thetext>Created attachment 434268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779907</commentid>
    <comment_count>4</comment_count>
      <attachid>434388</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-27 17:05:41 -0700</bug_when>
    <thetext>Created attachment 434388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779955</commentid>
    <comment_count>5</comment_count>
      <attachid>434388</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-27 22:20:52 -0700</bug_when>
    <thetext>Comment on attachment 434388
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:207
&gt; +    imageBuffer.incrementUseCounter();

I think this should be similar to drawNativeImage() and appendDrawGlyphsItemWithCachedFont()

if (m_delegate)
    recordImageBufferUse(imageBuffer);

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:75
&gt; +        m_remoteRenderingBackendProxy-&gt;releaseRemoteResource(m_renderingResourceIdentifier, m_useCount);

I think this call can be moved to RemoteResourceCacheProxy::releaseImageBuffer() and you can know the useCount from ImageBufferHashMap which can have the definition:

struct ImageBufferState {
    WeakPtr&lt;WebCore::ImageBuffer&gt; imageBuffer;
    uint64_t useCount;
};
using ImageBufferHashMap = HashMap&lt;WebCore::RenderingResourceIdentifier, ImageBufferState&gt;;

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:329
&gt; +    void incrementUseCounter() final
&gt; +    {
&gt; +        ++m_useCount;
&gt; +    }

void recordImageBufferUse(WebCore::ImageBuffer&amp; imageBuffer)
{
    // Similar to what we do in recordFontUse
}

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:358
&gt; +    uint64_t m_useCount { 0 };

I think all the useCount in WebProcess should be managed by RemoteResourceCacheProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779968</commentid>
    <comment_count>6</comment_count>
      <attachid>434406</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 00:04:19 -0700</bug_when>
    <thetext>Created attachment 434406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779970</commentid>
    <comment_count>7</comment_count>
      <attachid>434408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 00:14:15 -0700</bug_when>
    <thetext>Created attachment 434408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780171</commentid>
    <comment_count>8</comment_count>
      <attachid>434408</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-28 12:59:19 -0700</bug_when>
    <thetext>Comment on attachment 434408
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:204
&gt; +        item.imageBuffer-&gt;clearBackend();

Do we need to reset the useCount to &apos;0&apos; if GPUP is relaunched?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780214</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 14:47:06 -0700</bug_when>
    <thetext>Committed r280401 (240042@main): &lt;https://commits.webkit.org/240042@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780216</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-28 14:48:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/81237219&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434073</attachid>
            <date>2021-07-23 01:16:53 -0700</date>
            <delta_ts>2021-07-26 21:08:44 -0700</delta_ts>
            <desc>Patch for reviewing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>18386</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDJmZDFlYjU0ZWMwM2NjYTliZGFiYTg4ZTg0ZTZjN2ZiOWZlMDI4MGYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgSnVsIDIz
IDAxOjE2OjIyIDIwMjEgLTA3MDAKCiAgICBbR1BVIFByb2Nlc3NdIFN0YXJ0IHRyYWNraW5nIHJl
c291cmNlIHVzZXMgZm9yIEltYWdlQnVmZmVycwogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyODIyNQogICAgCiAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAgIFNpbXBseSBhZGQgYSBjYWxsYmFj
ayB0byBpbmNyZW1lbnQgdGhlIHVzZSBjb3VudGVyIGZvciBJbWFnZUJ1ZmZlcnMuCiAgICAKICAg
IFRoaXMgcGF0Y2ggaXNuJ3QgdXNpbmcgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIE5hdGl2ZUltYWdl
cy9Gb250cyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNCkK
ICAgIGJlY2F1c2UgSW1hZ2VCdWZmZXJzIGFyZW4ndCBhbHJlYWR5IHRyYWNrZWQgdGhyb3VnaCBS
ZW1vdGVSZXNvdXJjZUNhY2hlLiBTbywgd2UgY2FuIHVzZSBhIHBhcmFsbGVsIGRlc2lnbiB0bwog
ICAgaG93IEltYWdlQnVmZmVycyBoYXZlIGEgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkg
dmlydHVhbCBmdW5jdGlvbi4KICAgIAogICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KICAg
IAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgogICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjppbmNyZW1lbnRVc2VDb3VudGVyKToKICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgogICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIpOgogICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKICAgIAogICAgU291cmNlL1dlYktpdDoK
ICAgIAogICAgVGhpcyBpcyBwYXJ0IDQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODIxNi4KICAgIAogICAgU2ltcGx5IGltcGxlbWVudCBpbmNyZW1lbnRVc2VD
b3VudGVyKCkgYW5kIHBhc3MgdGhlIHVzZSBjb3VudGVyIHRvIHJlbGVhc2VSZW1vdGVSZXNvdXJj
ZS4KICAgIEFsc28gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBuZWVkcyB0byBrbm93IGhvdyB0byB0
cmFjayB1c2VzIG9mIEltYWdlQnVmZmVycyB0b28uCiAgICAKICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KToKICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgogICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgogICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6cHV0UGl4ZWxCdWZmZXIpOgoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZTVjYmEzMGNlZWYuLjIxYTVkODM0ZjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIxLTA3LTIzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFn
ZUJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNpbXBseSBhZGQgYSBjYWxsYmFjayB0byBpbmNyZW1lbnQgdGhlIHVzZSBjb3VudGVyIGZvciBJ
bWFnZUJ1ZmZlcnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpc24ndCB1c2luZyB0aGUgc2FtZSBt
ZWNoYW5pc20gYXMgTmF0aXZlSW1hZ2VzL0ZvbnRzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI4MjI0KQorICAgICAgICBiZWNhdXNlIEltYWdlQnVmZmVycyBhcmVu
J3QgYWxyZWFkeSB0cmFja2VkIHRocm91Z2ggUmVtb3RlUmVzb3VyY2VDYWNoZS4gU28sIHdlIGNh
biB1c2UgYSBwYXJhbGxlbCBkZXNpZ24gdG8KKyAgICAgICAgaG93IEltYWdlQnVmZmVycyBoYXZl
IGEgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgdmlydHVhbCBmdW5jdGlvbi4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjppbmNy
ZW1lbnRVc2VDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorCiAyMDIxLTA3LTIyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJl
dmVydGluZyAyODAxMzAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAppbmRleCBmMWM3ZGIxM2Q4NTYuLmNmNTFmNzk5Njk1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03MSw2ICs3MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBp
bmNyZW1lbnRVc2VDb3VudGVyKCkgeyB9CiAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGI4YTJkYjlj
ZTBkZi4uMDkxZWY5YzYzNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUmVjb3JkZXI6OmdldFBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlCiAgICAgYXBw
ZW5kPEdldFBpeGVsQnVmZmVyPihvdXRwdXRGb3JtYXQsIHNvdXJjZVJlY3QpOwogfQogCi12b2lk
IFJlY29yZGVyOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYgcGl4
ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVz
dEZvcm1hdCkKK3ZvaWQgUmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
JiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewogICAgIGFwcGVu
ZDxQdXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZv
cm1hdCk7CiB9CkBAIC0xOTgsMTIgKzE5OCwxMyBAQCB2b2lkIFJlY29yZGVyOjphcHBlbmREcmF3
R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQgog
ICAgIGFwcGVuZDxEcmF3R2x5cGhzPihmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9j
YWxBbmNob3IsIHNtb290aGluZ01vZGUpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQordm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpbWFnZUJ1ZmZlci5pbmNy
ZW1lbnRVc2VDb3VudGVyKCk7CiAgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwog
fQpAQCAtNDY1LDYgKzQ2Niw3IEBAIEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKSBjb25z
dAogCiB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VC
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CisgICAgaW1hZ2VCdWZmZXIuaW5j
cmVtZW50VXNlQ291bnRlcigpOwogICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcik7CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBm
MzZjOWQ1YjkxNWEuLjZhMzI4ZDcyYWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMzEgKzEsMjAgQEAKIDIw
MjEtMDctMjMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAotICAg
ICAgICBbR1BVIFByb2Nlc3NdIFN0YXJ0IHRyYWNraW5nIHJlc291cmNlIHVzZXMgZm9yIE5hdGl2
ZUltYWdlcyBhbmQgRm9udHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODIyNAorICAgICAgICBbR1BVIFByb2Nlc3NdIFN0YXJ0IHRyYWNraW5nIHJl
c291cmNlIHVzZXMgZm9yIEltYWdlQnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjI1CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAKLSAgICAgICAgVGhpcyBpcyBwYXJ0IDMgb2YgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIxNi4KKyAgICAgICAgVGhpcyBpcyBwYXJ0IDQgb2Yg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIxNi4KIAotICAgICAg
ICBUaGlzIHBhdGNoIHRyaWdnZXJzIHRoZSBpbmZyYXN0cnVjdHVyZSBhZGRlZCBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjIyIGJ5IHRyYWNraW5nCi0gICAg
ICAgIHJlc291cmNlIHVzZSBjb3VudHMgaW4gdGhlIHdlYiBwcm9jZXNzLiBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgYWxyZWFkeSBpcyBub3RpZmllZCB3aGVuZXZlciBhIHJlc291cmNlCi0gICAg
ICAgIGlzIHVzZWQsIHNvIGl0IHJlY29yZHMgaG93IG1hbnkgb2YgdGhlc2Ugbm90aWZpY2F0aW9u
cyBpdCByZWNlaXZlcywgYW5kIHNlbmRzIHRoYXQgY291bnQgdG8gdGhlIEdQVSBwcm9jZXNzCi0g
ICAgICAgIHdpdGggdGhlIHJlbGVhc2UgbWVzc2FnZS4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBl
eGlzdGluZyByZXNvdXJjZSB0cmFja2luZyBIYXNoTWFwcyB1c2VkIGluCi0gICAgICAgIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSB0byBjb250aW51ZSB0byByZWNvcmQgd2hhdCB0aGV5IHdlcmUg
cmVjb3JkaW5nIGJlZm9yZSwgYnV0IGFsc28gaW5jbHVkZSB0aGlzIG5ldyAKLSAgICAgICAgcmVz
b3VyY2UgdXNlIGNvdW50IGluZm9ybWF0aW9uLgotCi0gICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisgICAgICAgIFNpbXBseSBpbXBsZW1lbnQgaW5jcmVtZW50VXNlQ291bnRlcigp
IGFuZCBwYXNzIHRoZSB1c2UgY291bnRlciB0byByZWxlYXNlUmVtb3RlUmVzb3VyY2UuIAorICAg
ICAgICBBbHNvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgbmVlZHMgdG8ga25vdyBob3cgdG8gdHJh
Y2sgdXNlcyBvZiBJbWFnZUJ1ZmZlcnMgdG9vLgogCiAgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKICAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6YXBwbHkpOgotICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6Ci0gICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6flJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSk6Ci0gICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2Fj
aGVOYXRpdmVJbWFnZSk6Ci0gICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Y2FjaGVGb250KToKLSAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgotICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNsZWFyRm9udE1hcCk6Ci0gICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGVGb3JGb250cyk6Ci0gICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OnB1dFBp
eGVsQnVmZmVyKToKIAogMjAyMS0wNy0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA0OTFjYTEwYmRiMGMuLjg5YjAzYWQ1
MTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjA4LDcgKzIwOCwxMCBAQCBib29s
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtSAogICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNv
cmRSZXNvdXJjZVVzZShzZXRTdGF0ZS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpOwog
ICAgICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZp
bGxQYXR0ZXJuQ2hhbmdlKSkKICAgICAgICAgICAgIHJlbW90ZVJlc291cmNlQ2FjaGUucmVjb3Jk
UmVzb3VyY2VVc2Uoc2V0U3RhdGUuZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSk7Ci0gICAg
fQorICAgIH0gZWxzZSBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdl
QnVmZmVyPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNl
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI+KCkuaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKCkpOworICAgIGVsc2UgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkNsaXBUb0ltYWdlQnVmZmVyPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNhY2hl
LnJlY29yZFJlc291cmNlVXNlKGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9J
bWFnZUJ1ZmZlcj4oKS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAKICAgICBhdXRvIGFwcGx5
ID0gWyZdKGF1dG8mJiBkZXN0aW5hdGlvbikgewogICAgICAgICByZXR1cm4gZGVzdGluYXRpb24u
YXBwbHkoaXRlbSwgZ3JhcGhpY3NDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
aW5kZXggZDRjYmMyYzBjOTAzLi5mNzQ5MTIwMDRmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVs
ZWFzZVJlbW90ZVJlc291cmNlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAwKTsgLy8g
RklYTUU6IFBhc3MgdGhlIHJlYWwgdXNlIGNvdW50IGhlcmUuCisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIG1fdXNlQ291bnQpOwogICAgIH0KIAogICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQpAQCAtMTEwLDcgKzEx
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgp
LnNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlbmRlcmluZ01vZGUoKTsgfQorICAgIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZW5kZXJpbmdNb2RlKCk7IH0KIAogICAgIC8vIEl0
IGlzIHNhZmUgdG8gYWNjZXNzIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgZnJvbSB0aGUgbWFp
biB0aHJlYWQgd2l0aG91dCBsb2NraW5nIHNpbmNlIGl0CiAgICAgLy8gb25seSBnZXRzIG1vZGlm
aWVkIG9uIHRoZSBtYWluIHRocmVhZC4KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRl
bnRpZmllcjsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
Rmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrIH07CkBAIC0x
NTAsNyArMTUwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQo
U2hhcmVkRGlzcGxheUxpc3RzLCAiRXhjZWVkZWQgdGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBm
bHVzaCBpbiByZW1vdGUgcmVuZGVyaW5nIGJhY2tlbmQ6ICUiIFBSSXU2NCAiLiIsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZCogZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZQorICAgIFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZCogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVy
biBtX2JhY2tlbmQuZ2V0KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAotICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBx
dWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24sIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25z
dCBvdmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xODIsNyArMTgyLDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmdldERhdGFGb3JJbWFnZUJ1ZmZlcihtaW1lVHlwZSwgcXVhbGl0eSwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpC
YWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3Jl
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpj
cmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNv
cHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZp
bmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMDQsNyArMjA0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogICAgIH0KIAot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQ
aXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0yMzAsNyArMjMwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gcGl4
ZWxCdWZmZXI7CiAgICAgfQogCi0gICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFs
cGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCisgICAgdm9pZCBwdXRQaXhlbEJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7
IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIGZpbmFsCiAgICAgewogICAg
ICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgUGl4ZWxCdWZmZXI6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdy
ZWUgd2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZl
cigpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBp
biB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRQaXhlbEJ1
ZmZlcigpIGlzIG9ubHkgY2FsbGVkIHdoZW4gcmVzb2x1dGlvblNjYWxlKCkgPT0gMS4KQEAgLTIz
OCwxNSArMjM4LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNv
cmRlcigpLnB1dFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRl
c3RGb3JtYXQpOwogICAgIH0KIAotICAgIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxh
eSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHByZWZlcnNQcmVwYXJhdGlv
bkZvckRpc3BsYXkoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlCisgICAgdm9pZCBmbHVzaENvbnRleHQoKSBmaW5hbAogICAgIHsKICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwogICAgICAgICBtX2JhY2tlbmQtPmZsdXNoQ29u
dGV4dCgpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRl
CisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgZmluYWwKICAgICB7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgd2FpdEZvckRp
ZEZsdXNoV2l0aFRpbWVvdXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRl
eHRBc3luYygpIG92ZXJyaWRlCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QXN5bmMoKSBm
aW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzAsMTMgKzI3MCwxMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGNsZWFyRGlzcGxheUxpc3QoKTsKICAgICB9CiAKLSAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIGZpbmFs
CiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0Nh
Y2hlZEltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMwMyw3ICszMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0Nv
bnRleHQuZGlzcGxheUxpc3QoKS5jbGVhcigpOwogICAgIH0KIAotICAgIGJvb2wgY2FuQXBwZW5k
SXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRlCisgICAg
Ym9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzExLDE4ICszMTEsMjMg
QEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUm
IGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRD
aGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlCisgICAgdm9pZCBk
aWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
JiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlk
Q2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+ZGlkQXBwZW5kRGF0YShoYW5kbGUsIG51
bWJlck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250JiBmb250
KSBvdmVycmlkZQorICAgIHZvaWQgY2FjaGVGb250KFdlYkNvcmU6OkZvbnQmIGZvbnQpIGZpbmFs
CiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KCkuY2FjaGVGb250KGZvbnQpOwogICAgIH0KIAorICAgIHZvaWQgaW5jcmVtZW50VXNl
Q291bnRlcigpIGZpbmFsCisgICAgeworICAgICAgICArK21fdXNlQ291bnQ7CisgICAgfQorCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKQEAgLTM0MywxMyArMzQ4LDE0IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgfSwgaXRlbSk7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlk
ZQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVz
aGVyPiBjcmVhdGVGbHVzaGVyKCkgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1h
a2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNrZW5kVHlwZT4+
KCp0aGlzKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKICAgICBMb2NrIG1fcmVjZWl2ZWRGbHVzaElkZW50
aWZpZXJMb2NrOworICAgIHVpbnQ2NF90IG1fdXNlQ291bnQgeyAwIH07CiAgICAgQ29uZGl0aW9u
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uOwogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsgLy8gT25s
eSBtb2RpZmllZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IG1heSBnZXQgcXVlcmllZCBvbiBhIHNl
Y29uZGFyeSB0aHJlYWQuCiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434074</attachid>
            <date>2021-07-23 01:17:58 -0700</date>
            <delta_ts>2021-07-26 21:08:48 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-228225-20210723011757.patch</filename>
            <type>text/plain</type>
            <size>43715</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU1Y2JhMzBjZWVmNGY4
ZGJhOWYwOTJhNTdlYjgxYmE4YTRhMGRhMS4uMjFhNWQ4MzRmNTg5ZTIwZmRhYzg3YWM5NDA4Zjdi
MmUyNmRlOTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA3LTIzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1ZmZlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBseSBhZGQgYSBj
YWxsYmFjayB0byBpbmNyZW1lbnQgdGhlIHVzZSBjb3VudGVyIGZvciBJbWFnZUJ1ZmZlcnMuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpc24ndCB1c2luZyB0aGUgc2FtZSBtZWNoYW5pc20gYXMgTmF0
aXZlSW1hZ2VzL0ZvbnRzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MjI0KQorICAgICAgICBiZWNhdXNlIEltYWdlQnVmZmVycyBhcmVuJ3QgYWxyZWFkeSB0cmFj
a2VkIHRocm91Z2ggUmVtb3RlUmVzb3VyY2VDYWNoZS4gU28sIHdlIGNhbiB1c2UgYSBwYXJhbGxl
bCBkZXNpZ24gdG8KKyAgICAgICAgaG93IEltYWdlQnVmZmVycyBoYXZlIGEgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCkgdmlydHVhbCBmdW5jdGlvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjppbmNyZW1lbnRVc2VDb3VudGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnB1
dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorCiAyMDIxLTA3LTIyICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyAyODAxMzAu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDljMzQ2MjdiM2Y4MjljZDVhYzM1MTllOTBiZjVlYWM5ODBlNGU3YTUuLjZh
MzI4ZDcyYWI2ODVkZDAwNjI4ZDE5MDMyYWEyNWEzZTkxOTEyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMjEtMDctMjMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFN0YXJ0IHRyYWNraW5nIHJlc291cmNlIHVz
ZXMgZm9yIEltYWdlQnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI4MjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBwYXJ0IDQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyODIxNi4KKworICAgICAgICBTaW1wbHkgaW1wbGVtZW50IGluY3JlbWVu
dFVzZUNvdW50ZXIoKSBhbmQgcGFzcyB0aGUgdXNlIGNvdW50ZXIgdG8gcmVsZWFzZVJlbW90ZVJl
c291cmNlLiAKKyAgICAgICAgQWxzbyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG5lZWRzIHRvIGtu
b3cgaG93IHRvIHRyYWNrIHVzZXMgb2YgSW1hZ2VCdWZmZXJzIHRvby4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6On5SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
cHV0UGl4ZWxCdWZmZXIpOgorCiAyMDIxLTA3LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTGl2ZSBUZXh0XSBbaU9TXSBBbmFseXNpcyBzaG91bGQgYWxz
byBzZWFyY2ggZm9yIGFueSBBcHAgQ2xpcCBjb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjFjN2RiMTNkODU2NTc0YTE0ZDI4OGU3
NTQ5ZDhiMGNiZmFiNWU4Yi4uY2Y1MWY3OTk2OTUyNDc3ZTE2MTQ2MmExNGJmZDE3OTA1NzYxZjQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuTWFwQmFja2luZ1N0
b3JlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAg
IHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRVc2VDb3VudGVyKCkgeyB9CiAKICAgICB2aXJ0dWFsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1
c2hDb250ZXh0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IGI4YTJkYjljZTBkZjFjOTkyYjVlYzQ3ZWEwNzA3YzhmYjVmODU4YmEuLjA5MWVmOWM2
MzQwOTM0ZGQzMTE3OGMzODRhNTVlNTU3Y2RmMDhlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBSZWNvcmRlcjo6Z2V0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3Qg
SW50UmUKICAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgc291cmNlUmVj
dCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBp
eGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
CiB7CiAgICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVz
dFBvaW50LCBkZXN0Rm9ybWF0KTsKIH0KQEAgLTE5OCwxMiArMTk4LDEzIEBAIHZvaWQgUmVjb3Jk
ZXI6OmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCCiAgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBocywgYWR2YW5j
ZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7CiB9CiAKLXZvaWQgUmVjb3Jk
ZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmICghY2FuRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKSkgewog
ICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlt
YWdlQnVmZmVyLmluY3JlbWVudFVzZUNvdW50ZXIoKTsKICAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGlt
YWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CiB9CkBAIC00NjUsNiArNDY2LDcgQEAgSW50UmVjdCBSZWNvcmRlcjo6Y2xp
cEJvdW5kcygpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBp
bWFnZUJ1ZmZlci5pbmNyZW1lbnRVc2VDb3VudGVyKCk7CiAgICAgbV9kaXNwbGF5TGlzdC5jYWNo
ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+
KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZjM3MGI0MTE4
ZDAyNDNhMWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1My4uMzU2MWRhMGJkMTIyNmNiYzk1MjdlYWZl
ZDEzNDU3N2RkZjhkM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcApAQCAtMjMyLDYgKzIzMiw5IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+ZGlk
Q29tcGxldGVSZXBsYXlpbmcoKTsKKwogICAgIHJlc3VsdC50cmFja2VkRGlzcGxheUxpc3QgPSBX
VEZNb3ZlKHJlcGxheUxpc3QpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCAxNjYyN2EwMjA2ZTMwOTI0M2Y4YjdiZDE4Y2Ri
M2RhNTg2MDc4YThmLi41NzkzOWVlOTc3ZWQ0ZWM0NThhMGQ0NTkyZDlkY2RiNzJhZmNmMDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3ND
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlUmVwbGF5aW5nKCkgeyB9CiAgICAgfTsKICAgICAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCmluZGV4IGQyZjk1YmQ5NmNhYzA0MGY2MTIyY2I0ODBjZTg4YmUxZGFjMGQxZDEuLmNi
M2Y4ZTgzNWQwYzgwYTdhNTI3NjlhNGQ2MjA3ZDc4YTU4ODRiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0z
OCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpDb25j
cmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZXBsYXllcjo6RGVsZWdhdGUgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
V2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQ7CiAg
ICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKQEAgLTc1LDcgKzc1
LDkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIG92ZXJyaWRlCisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7CisKKyAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0
ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB7CiAgICAgICAgIGlm
IChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcj4oKSkgewogICAg
ICAgICAgICAgYXV0byYgZ2V0UGl4ZWxCdWZmZXJJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyPigpOwpAQCAtMTA4LDE2ICsxMTAsNiBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVt
KGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlTWFza0ltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgZmluYWwKLSAgICB7Ci0gICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIpOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKSBm
aW5hbAotICAgIHsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZFJlc2V0TWFz
a0ltYWdlQnVmZmVyKCk7Ci0gICAgfQotCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKaW5kZXggYTVlZGY5MWE3YjU0MmM1ZjZiZTcyNzgxMDI5ZDhkYTFjNmU2NTJjMi4u
ODliMDNhZDUxMDM2N2QzNjI3NWVhZDczZTlmOWRhYmRlZTVkY2E5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcApAQCAtMTg0LDE2ICsxODQsNjYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4K
ICAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGlu
Z1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKK1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OlJlcGxheWVyRGVsZWdhdGUoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKQorICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAsIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICwgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7Cit9
CisKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6YXBwbHko
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7CisgICAgYXV0byYgcmVtb3RlUmVzb3VyY2VDYWNo
ZSA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCk7CisKKyAg
ICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oKSkKKyAgICAg
ICAgcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oKS5mb250SWRlbnRpZmllcigpKTsKKyAgICBlbHNl
IGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybj4oKSkKKyAgICAg
ICAgcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm4+KCkuaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGVs
c2UgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZT4oKSkK
KyAgICAgICAgcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPigpLmltYWdlSWRlbnRpZmllcigp
KTsKKyAgICBlbHNlIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4o
KSkgeworICAgICAgICBhdXRvJiBzZXRTdGF0ZSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpTZXRTdGF0ZT4oKTsKKyAgICAgICAgYXV0byBjaGFuZ2VGbGFncyA9IHNldFN0YXRlLnN0
YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFnczsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKKyAgICAgICAg
ICAgIHJlbW90ZVJlc291cmNlQ2FjaGUucmVjb3JkUmVzb3VyY2VVc2Uoc2V0U3RhdGUuc3Ryb2tl
UGF0dGVybkltYWdlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCisgICAgICAgICAg
ICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNlKHNldFN0YXRlLmZpbGxQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIH0gZWxzZSBpZiAoaXRlbS5pczxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNh
Y2hlLnJlY29yZFJlc291cmNlVXNlKGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
SW1hZ2VCdWZmZXI+KCkuaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIGVsc2UgaWYgKGl0
ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0ltYWdlQnVmZmVyPigpKQorICAgICAg
ICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNlKGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpDbGlwVG9JbWFnZUJ1ZmZlcj4oKS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIo
KSk7CisKKyAgICBhdXRvIGFwcGx5ID0gWyZdKGF1dG8mJiBkZXN0aW5hdGlvbikgeworICAgICAg
ICByZXR1cm4gZGVzdGluYXRpb24uYXBwbHkoaXRlbSwgZ3JhcGhpY3NDb250ZXh0KTsKKyAgICB9
OworCisgICAgaWYgKG1fZGVzdGluYXRpb24ucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICByZXR1cm4gYXBwbHkoc3RhdGljX2Nhc3Q8QWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+KG1fZGVzdGluYXRpb24pKTsKKyAgICByZXR1cm4gYXBw
bHkoc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0aW5h
dGlvbikpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdh
dGU6OmRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VC
dWZmZXIpCit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZENyZWF0ZU1hc2tJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKQoreworICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5kaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcigpOworfQorCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmRpZENvbXBsZXRlUmVw
bGF5aW5nKCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VzQXJlSW5PcmRlciA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkucHJ1bmUoKTsKKyAgICBNRVNTQUdFX0NI
RUNLKG1lc3NhZ2VzQXJlSW5PcmRlciwgIldlYiBwcm9jZXNzIHRyaWVkIHRvIHJlbGVhc2UgYSBy
ZXNvdXJjZSB0aGF0IHdhc24ndCBjYWNoZWQiKTsKK30KKwogRGlzcGxheUxpc3Q6OlJlcGxheVJl
c3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKQogewogICAg
IGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlKiByZXBsYXllckRlbGVnYXRlID0gbnVsbHB0
cjsKLSAgICBpZiAoZGVzdGluYXRpb24ucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkKQotICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8QWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7Ci0gICAgZWxzZQotICAg
ICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUlt
YWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKKyAgICBSZXBsYXllckRlbGVnYXRlIHJlcGxheWVy
RGVsZWdhdGUoZGVzdGluYXRpb24sICp0aGlzLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
OwogCiAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CiAgICAgICAg
IGRlc3RpbmF0aW9uLmNvbnRleHQoKSwKQEAgLTIwMiw3ICsyNTIsNyBAQCBEaXNwbGF5TGlzdDo6
UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5
TGlzdDo6RGlzcAogICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygp
LAogICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmZvbnRzKCksCiAgICAgICAgIG1fY3Vy
cmVudE1hc2tJbWFnZUJ1ZmZlci5nZXQoKSwKLSAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZQorICAg
ICAgICAmcmVwbGF5ZXJEZWxlZ2F0ZQogICAgIH0ucmVwbGF5KCk7CiB9CiAKQEAgLTQ4MywxMCAr
NTMzLDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVsZXRlQWxsRm9udHMoKQog
ICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5kZWxldGVBbGxGb250cygpOwogfQogCi12b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIGF1dG8gc3VjY2VzcyA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CisgICAgTUVT
U0FHRV9DSEVDSyhzdWNjZXNzLCAiUmVzb3VyY2UgaXMgYmVpbmcgcmVsZWFzZWQgYmVmb3JlIGJl
aW5nIGNhY2hlZC4iKTsKICAgICB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggYTM1MTY1YjE5MTFmOWE5M2YzZDRhOGRlOTFiMTAx
Zjc1NjlhYmIyMi4uODcyNjI5ZjAyNTNiZjRiNjkzNjgyYjcwMjIzMjg1ZmZiNjEzNTZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xNDQsOSArMTQ0LDI0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlRm9udChSZWY8
V2ViQ29yZTo6Rm9udD4mJik7CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwotICAgIHZvaWQg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CiAgICAgdm9pZCBkaWRDcmVhdGVT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAKKyAg
ICBjbGFzcyBSZXBsYXllckRlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllcjo6RGVsZWdhdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVwbGF5ZXJEZWxlZ2F0
ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIGFwcGx5
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZXNldE1hc2tJbWFnZUJ1
ZmZlcigpIGZpbmFsOworICAgICAgICB2b2lkIGRpZENvbXBsZXRlUmVwbGF5aW5nKCkgZmluYWw7
CisKKyAgICAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIG1fZGVzdGluYXRpb247CisgICAgICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICAg
ICAgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKKyAgICB9OworCiAgICAgc3RydWN0IFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbiB7CiAg
ICAgICAgIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzIGFyZ3VtZW50czsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluCmluZGV4IDRiM2ZlOWEwMjYyZThhNTQ5MTg1MmM2ZDZhMDQwNDVkNmE2OTYz
OTcuLmZmNjJhZjUxMWYzZTJlNWNlYmY0NzQxYmIzNTAzMzg0OTRlMzhlYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0zNiw3ICszNiw3IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZl
cmVuY2UgZm9udCkKICAgICBEZWxldGVBbGxGb250cygpCiAgICAgRGlkQ3JlYXRlU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyKQotICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIFJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCkKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAppbmRleCA4MWRkZTBiZmZjZjBiZDZj
YzFjMjhlNWRkMjQ2Mzc0YjM0NjQ2Mjc4Li4zMWExOTRmNGEyODExMzY5NGZlNjFiYWQ0YjhjMTFh
YjgyM2UwYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0zMyw4ICszMywxMCBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdl
QnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyID0gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
OworICAgIG1faW1hZ2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpKTsKKworICAgIGluY3JlbWVudE9wZW5Db3VudChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTQ0LDE0ICs0NiwyNyBAQCBJbWFnZUJ1ZmZlciogUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZUlt
YWdlcy5hZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGlt
YWdlKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKKyAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGltYWdlLT5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CisKKyAgICBpbmNyZW1lbnRPcGVu
Q291bnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKIHsKLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fZm9udHMuYWRkKGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGZvbnQpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZm9udC0+
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgbV9mb250cy5hZGQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKKworICAgIGluY3JlbWVudE9wZW5D
b3VudChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmluY3JlbWVudE9wZW5Db3VudChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmVuc3VyZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFsmXSB7CisgICAgICAgIHJldHVybiBSZXNvdXJjZVVzZUNvdW50ZXIgeyB9OworICAgIH0p
OworICAgICsrcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5vcGVuQ291bnQ7CisgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5vcGVuQ291bnQpOwogfQogCiB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OmRlbGV0ZUFsbEZvbnRzKCkKQEAgLTU5LDE2ICs3NCw3MiBAQCB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmRlbGV0ZUFsbEZvbnRzKCkKICAgICBtX2ZvbnRzLmNsZWFy
KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Citib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRlcmF0b3IgaXRlcmF0b3IpCiB7CisgICAgLy8gSXQn
cyBhY3R1YWxseSBva2F5IGlmIHVzZUNvdW50ID4gdG90YWxVc2VDb3VudC4KKyAgICAvLyBJdCBq
dXN0IG1lYW5zIHRoYXQgdGhlcmUncyBhIGNhY2hlIG1lc3NhZ2UgcGVuZGluZywgYW5kIHdlJ3Zl
IGVhZ2VybHkgdXNlZCBhIHByZXZpb3VzbHktY2FjaGVkIHJlc291cmNlLgorICAgIC8vIFdoaWNo
IGlzIGZpbmUuCisgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZG4ndCBhY3R1YWxseSByZW1v
dmUgdGhlIHJlc291cmNlIGluIHRoaXMgc2l0dWF0aW9uPworICAgIC8vIFdlIG1heSBhY3R1YWxs
eSBiZSBhYmxlIHRvIGdldCBhIGhlYWQgc3RhcnQgb24gc29tZSBkaXNwbGF5IGxpc3QgaXRlbXMg
aWYgdGhleSdyZSByZWFkeSBmb3IgdXMgYW5kIHdlIGhhdmUgdGhlIHJlc291cmNlcyB0aGV5IGRl
cGVuZCBvbi4KKworICAgIGlmIChpdGVyYXRvci0+dmFsdWUub3BlbkNvdW50IHx8IGl0ZXJhdG9y
LT52YWx1ZS51c2VDb3VudCA8IGl0ZXJhdG9yLT52YWx1ZS50b3RhbFVzZUNvdW50KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpdGVyYXRvci0+dmFsdWUudXNlQ291bnQgLT0gaXRlcmF0b3It
PnZhbHVlLnRvdGFsVXNlQ291bnQ7CisgICAgaXRlcmF0b3ItPnZhbHVlLnRvdGFsVXNlQ291bnQg
PSAwOworICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLnVzZUNvdW50KQorICAgICAgICBtX3Jlc291
cmNlVXNlQ291bnRlcnMucmVtb3ZlKGl0ZXJhdG9yKTsKKwogICAgIGlmIChtX2ltYWdlQnVmZmVy
cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAvLyBDYWNo
aW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVh
c2luZyBpdC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmZpbmQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNl
VXNlQ291bnRlcnMuZW5kKCkpIHsKKyAgICAgICAgLy8gVGhlIGRpc3BsYXkgbGlzdCBpdGVtcyB3
b24gdGhlIHJhY2UgYWdhaW5zdCB0aGUgY2FjaGVGb250IG1lc3NhZ2UuCisgICAgICAgIC8vIFdo
ZW4gd2UgcmVjZWl2ZSB0aGUgY2FjaGVGb250IG1lc3NhZ2UsIHdlIHdpbGwgcmV0cnkgdGhlIGRp
c3BsYXkgbGlzdCBpdGVtLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzb3VyY2VV
c2VDb3VudGVyJiB1c2VDb3VudGVyID0gaXRlcmF0b3ItPnZhbHVlOworICAgICsrdXNlQ291bnRl
ci51c2VDb3VudDsKKworICAgIG1fcmVzb3VyY2VzRm9yTWF5YmVSZW1vdmluZy5hZGQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpw
cnVuZSgpCit7CisgICAgZm9yIChhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA6IG1f
cmVzb3VyY2VzRm9yTWF5YmVSZW1vdmluZykgeworICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9y
ZXNvdXJjZVVzZUNvdW50ZXJzLmZpbmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbmQoKSk7Cisg
ICAgICAgIGF1dG8gbWVzc2FnZXNBcmVJbk9yZGVyID0gbWF5YmVSZW1vdmVSZXNvdXJjZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFtZXNzYWdl
c0FyZUluT3JkZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fcmVz
b3VyY2VzRm9yTWF5YmVSZW1vdmluZy5jbGVhcigpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1
c2VDb3VudCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmZp
bmQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9y
ZXNvdXJjZVVzZUNvdW50ZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUmVz
b3VyY2VVc2VDb3VudGVyJiB1c2VDb3VudGVyID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICgh
aXRlcmF0b3ItPnZhbHVlLm9wZW5Db3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC0t
dXNlQ291bnRlci5vcGVuQ291bnQ7CisgICAgdXNlQ291bnRlci50b3RhbFVzZUNvdW50ICs9IHVz
ZUNvdW50OworICAgIHJldHVybiBtYXliZVJlbW92ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgaXRlcmF0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCmluZGV4IDJjZWQ5MDlmNDgxMTBjNjY2NTZkZTFiZmUzODExZGJhYmFhYTlmNGYuLmFk
Mjc0ZDczZDE2MTIxZGFjZGVjMDk0NWVhYjY4NmE3YjMyMzRhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApA
QCAtNDYsMTYgKzQ2LDQ1IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVm
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29y
ZTo6Rm9udD4mJik7CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwotICAgIHZvaWQgcmVsZWFz
ZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgYm9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVz
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGJvb2wgcHJ1bmUo
KTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
SW1hZ2VzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBm
b250cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KIAogcHJpdmF0ZToKKyAgICAvLyBCZWNh
dXNlIHRoZSBjYWNoZS9yZWxlYXNlIG1lc3NhZ2VzIGFyZSBzZW50IGFzeW5jaHJvbm91c2x5IGZy
b20gdGhlIGRpc3BsYXkgbGlzdCBpdGVtcyB3aGljaAorICAgIC8vIHJlZmVyZW5jZSB0aGUgcmVz
b3VyY2VzLCBpdCdzIHRvdGFsbHkgcG9zc2libGUgdGhhdCB3ZSBzZWUgYSByZWxlYXNlIG1lc3Nh
Z2UgYmVmb3JlIHdlJ3ZlCisgICAgLy8gZXhlY3V0ZWQgYWxsIHRoZSBkaXNwbGF5IGxpc3QgaXRl
bXMgd2hpY2ggcmVmZXJlbmNlIHRoZSByZXNvdXJjZS4gVGhlIHdlYiBwcm9jZXNzIHRlbGxzIHVz
CisgICAgLy8gaG93IG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zIHdpbGwgcmVmZXJlbmNlIHRoaXMg
cmVzb3VyY2UsIGFuZCB3ZSBkZWZlciBkZWxldGlvbiBvZiB0aGUgcmVzb3VyY2UKKyAgICAvLyB1
bnRpbCB3ZSBleGVjdXRlIHRoYXQgbWFueSBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgLy8KKyAg
ICAvLyBJdCdzIGFjdHVhbGx5IGEgYml0IHdvcnNlIHRoYW4gdGhpcywgdGhvdWdoLCBiZWNhdXNl
IHdlIG1heSBhY3R1YWxseSBzZWUgYSAqbmV3KiBjYWNoZSBtZXNzYWdlCisgICAgLy8gZHVyaW5n
IHRoZSB0aW1lIHdoZW4gZGVsZXRpb24gaXMgZGVmZXJyZWQsIHNvIHdlIG5lZWQgYSBzZWNvbmQg
Y291bnQgb2YgdGhlIG51bWJlciBvZiBjYWNoZQorICAgIC8vIG1lc3NhZ2VzIHdoaWNoIGRvbid0
IGhhdmUgYW4gYWNjb21wYW55aW5nIHJlbGVhc2UgbWVzc2FnZXMuCisgICAgLy8KKyAgICAvLyBX
ZSBjYW4gb25seSBzYWZlbHkgZGVsZXRlIGEgcmVzb3VyY2Ugd2hlbjoKKyAgICAvLyAxLiBBbGwg
dGhlIGNhY2hlIG1lc3NhZ2VzIGhhdmUgYW4gYWNjb21wYW55aW5nIHJlbGVhc2UgbWVzc2FnZSwg
YW5kCisgICAgLy8gMi4gV2UndmUgcHJvY2Vzc2VkIGFzIG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1z
IHRoYXQgcmVmZXJlbmNlIGEgcGFydGljdWxhciByZXNvdXJjZSBhcyB0aGUgd2ViCisgICAgLy8g
cHJvY2VzcyBoYXMgZW5jb2RlZC4KKyAgICBzdHJ1Y3QgUmVzb3VyY2VVc2VDb3VudGVyIHsKKyAg
ICAgICAgdWludDY0X3Qgb3BlbkNvdW50IHsgMCB9OyAvLyBUaGUgbnVtYmVyIG9mIGNhY2hlRm9v
IG1lc3NhZ2VzIHdlJ3ZlIHJlY2VpdmVkIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHJlbGVhc2Ug
bWVzc2FnZQorICAgICAgICB1aW50NjRfdCB1c2VDb3VudCB7IDAgfTsgLy8gVGhlIG51bWJlciBv
ZiByZW5kZXJpbmcgY29tbWFuZHMgd2UndmUgZXhlY3V0ZWQgd2hpY2ggcmVmZXJlbmNlIHRoaXMg
cmVzb3VyY2UKKyAgICAgICAgdWludDY0X3QgdG90YWxVc2VDb3VudCB7IDAgfTsgLy8gT25jZSB1
c2VDb3VudCBoaXRzIHRoaXMgbGltaXQsIHdlIGNhbiBmcmVlIHRoZSByZXNvdXJjZQorICAgIH07
CisgICAgdXNpbmcgUmVzb3VyY2VVc2VDb3VudGVyc01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXI+OworCisgICAgYm9v
bCBtYXliZVJlbW92ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgUmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRlcmF0b3IpOworICAgIHZvaWQgaW5jcmVtZW50
T3BlbkNvdW50KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKICAgICBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAgIFdlYkNvcmU6OkZvbnRSZW5k
ZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOworCisgICAgUmVzb3VyY2VVc2VDb3VudGVyc01hcCBt
X3Jlc291cmNlVXNlQ291bnRlcnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IG1fcmVzb3VyY2VzRm9yTWF5YmVSZW1vdmluZzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBiNDQ4YjM3
Zjk3ZmU3YWU2NWRiZWJiMmE4NWFiMGM5OTRlMWYyNmJkLi5mNzQ5MTIwMDRmOWUyMGY0NTlmYjVj
ODcxNTliNDM0NDA4NWVkYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwogICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
LSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIG1fdXNlQ291bnQpOwogICAgIH0KIAogICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQpAQCAtMTEwLDcgKzEx
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgp
LnNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlbmRlcmluZ01vZGUoKTsgfQorICAgIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZW5kZXJpbmdNb2RlKCk7IH0KIAogICAgIC8vIEl0
IGlzIHNhZmUgdG8gYWNjZXNzIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgZnJvbSB0aGUgbWFp
biB0aHJlYWQgd2l0aG91dCBsb2NraW5nIHNpbmNlIGl0CiAgICAgLy8gb25seSBnZXRzIG1vZGlm
aWVkIG9uIHRoZSBtYWluIHRocmVhZC4KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRl
bnRpZmllcjsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
Rmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrIH07CkBAIC0x
NTAsNyArMTUwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQo
U2hhcmVkRGlzcGxheUxpc3RzLCAiRXhjZWVkZWQgdGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBm
bHVzaCBpbiByZW1vdGUgcmVuZGVyaW5nIGJhY2tlbmQ6ICUiIFBSSXU2NCAiLiIsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZCogZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVycmlkZQorICAgIFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZCogZW5zdXJlQmFja2VuZENyZWF0ZWQoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVy
biBtX2JhY2tlbmQuZ2V0KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gbV9iYWNrZW5kLmdldCgpOwogICAgIH0KIAotICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJy
aWRlCisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBx
dWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24sIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25z
dCBvdmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xODIsNyArMTgyLDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PmdldERhdGFGb3JJbWFnZUJ1ZmZlcihtaW1lVHlwZSwgcXVhbGl0eSwgbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpC
YWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3Jl
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTkzLDcgKzE5
Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpj
cmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNv
cHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZp
bmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMDQsNyArMjA0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogICAgIH0KIAot
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQ
aXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CkBAIC0yMzAsNyArMjMwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gcGl4
ZWxCdWZmZXI7CiAgICAgfQogCi0gICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7IH0sIFdlYkNvcmU6OkFs
cGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCisgICAgdm9pZCBwdXRQaXhlbEJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQgPSB7
IH0sIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIGZpbmFsCiAgICAgewogICAg
ICAgICAvLyBUaGUgbWF0aCBpbnNpZGUgUGl4ZWxCdWZmZXI6OmNyZWF0ZSgpIGRvZXNuJ3QgYWdy
ZWUgd2l0aCB0aGUgbWF0aCBpbnNpZGUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZl
cigpIGFib3V0IGhvdyBtX3Jlc29sdXRpb25TY2FsZSBpbnRlcmFjdHMgd2l0aCB0aGUgZGF0YSBp
biB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBwdXRQaXhlbEJ1
ZmZlcigpIGlzIG9ubHkgY2FsbGVkIHdoZW4gcmVzb2x1dGlvblNjYWxlKCkgPT0gMS4KQEAgLTIz
OCwxNSArMjM4LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5yZWNv
cmRlcigpLnB1dFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRl
c3RGb3JtYXQpOwogICAgIH0KIAotICAgIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxh
eSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHByZWZlcnNQcmVwYXJhdGlv
bkZvckRpc3BsYXkoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlCisgICAgdm9pZCBmbHVzaENvbnRleHQoKSBmaW5hbAogICAgIHsKICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwogICAgICAgICBtX2JhY2tlbmQtPmZsdXNoQ29u
dGV4dCgpOwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRl
CisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgZmluYWwKICAgICB7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgd2FpdEZvckRp
ZEZsdXNoV2l0aFRpbWVvdXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRl
eHRBc3luYygpIG92ZXJyaWRlCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QXN5bmMoKSBm
aW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzAsMTMgKzI3MCwxMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGNsZWFyRGlzcGxheUxpc3QoKTsKICAgICB9CiAKLSAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIGZpbmFs
CiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0Nh
Y2hlZEltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMwMyw3ICszMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fZHJhd2luZ0Nv
bnRleHQuZGlzcGxheUxpc3QoKS5jbGVhcigpOwogICAgIH0KIAotICAgIGJvb2wgY2FuQXBwZW5k
SXRlbU9mVHlwZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRlCisgICAg
Ym9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzExLDE4ICszMTEsMjMg
QEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZEFwcGVuZERhdGEoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUm
IGhhbmRsZSwgc2l6ZV90IG51bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRD
aGFuZ2VJdGVtQnVmZmVyIGRpZENoYW5nZUl0ZW1CdWZmZXIpIG92ZXJyaWRlCisgICAgdm9pZCBk
aWRBcHBlbmREYXRhKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
JiBoYW5kbGUsIHNpemVfdCBudW1iZXJPZkJ5dGVzLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlk
Q2hhbmdlSXRlbUJ1ZmZlciBkaWRDaGFuZ2VJdGVtQnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+ZGlkQXBwZW5kRGF0YShoYW5kbGUsIG51
bWJlck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250JiBmb250
KSBvdmVycmlkZQorICAgIHZvaWQgY2FjaGVGb250KFdlYkNvcmU6OkZvbnQmIGZvbnQpIGZpbmFs
CiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAg
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KCkuY2FjaGVGb250KGZvbnQpOwogICAgIH0KIAorICAgIHZvaWQgaW5jcmVtZW50VXNl
Q291bnRlcigpIGZpbmFsCisgICAgeworICAgICAgICArK21fdXNlQ291bnQ7CisgICAgfQorCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKQEAgLTM0MywxMyArMzQ4LDE0IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgfSwgaXRlbSk7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSBvdmVycmlk
ZQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVz
aGVyPiBjcmVhdGVGbHVzaGVyKCkgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1h
a2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjxCYWNrZW5kVHlwZT4+
KCp0aGlzKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKICAgICBMb2NrIG1fcmVjZWl2ZWRGbHVzaElkZW50
aWZpZXJMb2NrOworICAgIHVpbnQ2NF90IG1fdXNlQ291bnQgeyAwIH07CiAgICAgQ29uZGl0aW9u
IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0aW9uOwogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrKTsgLy8gT25s
eSBtb2RpZmllZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IG1heSBnZXQgcXVlcmllZCBvbiBhIHNl
Y29uZGFyeSB0aHJlYWQuCiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCmluZGV4IDA5Y2U0YzZlZjZkNmFiZTcxZTAzZWFiN2ZhOGNkMjE0ZmY2
OGIwZmUuLmU5NWYxYWQzOTM0ZjI1NGJkNWY5OWQyM2E1YjQ2NTU1MzVjZTA5MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI0OSwxMiArMjQ5LDEyIEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZWxldGVBbGxGb250cygpCiAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGVsZXRlQWxsRm9udHMoKSwg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50
KQogewogICAgIGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPT0gbV9jdXJyZW50RGVz
dGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgICAgIG1fY3VycmVudERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogCi0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVt
b3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCksIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggNjMxNDk2NzBhMzU5NGUyNWEyZGE1Y2QxOTc2MTE0NjFjNjE3OTc0MC4uYjJjZTNkOGMyOGFi
MTkxMjUzNTE5MDI3ZmM5MDc0ZDIwZWQxNzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6
OkZvbnQ+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKLSAgICB2b2lkIHJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpOwogCiAgICAgZW51bSBjbGFzcyBEaWRSZWNlaXZl
QmFja2VuZENyZWF0aW9uUmVzdWx0IDogYm9vbCB7CiAgICAgICAgIFJlY2VpdmVkQW55UmVzcG9u
c2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggMDNmMzRiMzNhMjJk
ZDQ5MjhkNDI2MGU0Nzg2MmQzOTEzNzExMDFhZi4uNDBlYzM5MmNhZTQ2NTRhMzUzNDJmMzJlYWFj
YzQ0YWI3ODViNmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAt
NDEsOCArNDEsOCBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmCiAKIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eTo6flJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpCiB7Ci0gICAgZm9yIChhdXRvJiBp
bWFnZSA6IG1fbmF0aXZlSW1hZ2VzLnZhbHVlcygpKQotICAgICAgICBpbWFnZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIGZvciAoYXV0byYgbmF0aXZlSW1hZ2VTdGF0ZSA6IG1fbmF0aXZl
SW1hZ2VzLnZhbHVlcygpKQorICAgICAgICBuYXRpdmVJbWFnZVN0YXRlLmltYWdlLT5yZW1vdmVP
YnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNo
ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKQEAgLTgwLDgg
KzgwLDExIEBAIGlubGluZSBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hh
cmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKE5hdGl2CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIHsKLSAgICBp
ZiAobV9uYXRpdmVJbWFnZXMuY29udGFpbnMoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkpKQorICAgIGF1dG8gaXRlcmF0b3IgPSBtX25hdGl2ZUltYWdlcy5maW5kKGltYWdlLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9uYXRp
dmVJbWFnZXMuZW5kKCkpIHsKKyAgICAgICAgKytpdGVyYXRvci0+dmFsdWUudXNlQ291bnQ7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJs
ZUJpdG1hcEZyb21OYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgaWYgKCFiaXRtYXApCkBAIC05Miw3
ICs5NSw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSkKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGltYWdlKSk7CisgICAgbV9uYXRpdmVJbWFnZXMuYWRk
KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBOYXRpdmVJbWFnZVN0YXRlIHsg
bWFrZVdlYWtQdHIoaW1hZ2UpLCAxIH0pOwogCiAgICAgLy8gU2V0IGl0c2VsZiBhcyBhbiBvYnNl
cnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkKICAgICAvLyBnZXRz
IGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4KQEAgLTEwNCwyNSAr
MTA3LDMwIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlRm9udChGb250JiBmb250KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9mb250SWRlbnRpZmll
clRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIFsmXSB7Ci0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8gcmVz
dWx0ID0gbV9mb250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwg
WyZdIHsKKyAgICAgICAgcmV0dXJuIEZvbnRTdGF0ZSB7IDAsIDAgfTsKICAgICB9KTsKLSAgICBh
dXRvJiBsYXN0VmVyc2lvbiA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKGxhc3RW
ZXJzaW9uICE9IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb24pIHsKLSAgICAgICAgbGFz
dFZlcnNpb24gPSBtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJzaW9uOworICAgIGF1dG8mIGN1
cnJlbnRTdGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGN1cnJlbnRTdGF0
ZS5sYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvblVzZWRXaXRoaW4gIT0gbV9jdXJyZW50UmVuZGVy
aW5nVXBkYXRlVmVyc2lvbikgeworICAgICAgICBjdXJyZW50U3RhdGUubGFzdFJlbmRlcmluZ1Vw
ZGF0ZVZlcnNpb25Vc2VkV2l0aGluID0gbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbjsK
ICAgICAgICAgKyttX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlOwog
ICAgIH0KKyAgICArK2N1cnJlbnRTdGF0ZS51c2VDb3VudDsKICAgICBpZiAocmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlRm9udCht
YWtlUmVmKGZvbnQpKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewotICAgIGlmICghbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9uYXRpdmVJbWFnZXMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmF0aXZlSW1hZ2VzLmVuZCgpKTsKKworICAg
IGF1dG8gdXNlQ291bnQgPSBpdGVyYXRvci0+dmFsdWUudXNlQ291bnQ7CisKKyAgICBhdXRvIHN1
Y2Nlc3MgPSBtX25hdGl2ZUltYWdlcy5yZW1vdmUoaXRlcmF0b3IpOworICAgIEFTU0VSVF9VTlVT
RUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byBy
ZW1vdmUgdGhpcyByZXNvdXJjZS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1VwZGF0ZSgpCkBAIC0xMzMsOSAr
MTQxLDkgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnByZXBhcmVGb3JOZXh0UmVu
ZGVyaW5nVXBkYXRlKCkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNsZWFyRm9u
dE1hcCgpCiB7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250SWRlbnRpZmllclRvTGFzdFJl
bmRlcmluZ1VwZGF0ZVZlcnNpb25NYXApCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpdGVtLmtleSk7Ci0gICAgbV9mb250SWRlbnRp
ZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuY2xlYXIoKTsKKyAgICBmb3IgKGF1
dG8mIGZvbnRTdGF0ZSA6IG1fZm9udHMpCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShmb250U3RhdGUua2V5LCBmb250U3RhdGUudmFs
dWUudXNlQ291bnQpOworICAgIG1fZm9udHMuY2xlYXIoKTsKICAgICBtX251bWJlck9mRm9udHNV
c2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlID0gMDsKIH0KIApAQCAtMTQzLDIwICsxNTEsMjAg
QEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
Rm9yRm9udHMoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWluaW11bVJlbmRl
cmluZ1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlID0gNDsKIAotICAgIHVuc2lnbmVkIHRvdGFs
Rm9udENvdW50ID0gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25N
YXAuc2l6ZSgpOworICAgIHVuc2lnbmVkIHRvdGFsRm9udENvdW50ID0gbV9mb250cy5zaXplKCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmlu
Z1VwZGF0ZSA8PSB0b3RhbEZvbnRDb3VudCk7CiAgICAgaWYgKHRvdGFsRm9udENvdW50ID09IG1f
bnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiB0
b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVu
ZGVyaW5nVXBkYXRlVmVyc2lvbk1hcCkgewotICAgICAgICBpZiAobV9jdXJyZW50UmVuZGVyaW5n
VXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUgPj0gbWluaW11bVJlbmRlcmluZ1VwZGF0ZUNvdW50
VG9LZWVwRm9udEFsaXZlKSB7CisgICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250cykgeworICAg
ICAgICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUubGFz
dFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluID49IG1pbmltdW1SZW5kZXJpbmdVcGRh
dGVDb3VudFRvS2VlcEZvbnRBbGl2ZSkgewogICAgICAgICAgICAgdG9SZW1vdmUuYWRkKGl0ZW0u
a2V5KTsKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShpdGVtLmtleSk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UoaXRlbS5rZXksIGl0ZW0udmFsdWUudXNl
Q291bnQpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mb250SWRlbnRpZmllclRvTGFzdFJl
bmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkg
eworICAgIG1fZm9udHMucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgewogICAgICAg
ICByZXR1cm4gdG9SZW1vdmUuY29udGFpbnMoYnVja2V0LmtleSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCA2ZDczMWM0Y2M1ZWY2ZWYzMmMyODAyOWE1
YjAzMjQxM2ExNWE1ODkwLi44ZDExMTljYWI5MGU4YWMxZTNkODU4ODljOTI1NTIxZTIyZDA5ZDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmKTsKLQogICAgIHZvaWQgY2FjaGVGb250KFdlYkNvcmU6OkZvbnQmKTsKKwogICAg
IHZvaWQgZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIHZvaWQgcmVtb3RlUmVz
b3VyY2VDYWNoZVdhc0Rlc3Ryb3llZCgpOwpAQCAtNTksNyArNTksMTggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
Pj47Ci0gICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsK
KworICAgIHN0cnVjdCBOYXRpdmVJbWFnZVN0YXRlIHsKKyAgICAgICAgV2Vha1B0cjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZT4gaW1hZ2U7CisgICAgICAgIHVpbnQ2NF90IHVzZUNvdW50OworICAgIH07
CisgICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIE5hdGl2ZUltYWdlU3RhdGU+OworCisgICAgc3RydWN0IEZv
bnRTdGF0ZSB7CisgICAgICAgIHVpbnQ2NF90IGxhc3RSZW5kZXJpbmdVcGRhdGVWZXJzaW9uVXNl
ZFdpdGhpbjsKKyAgICAgICAgdWludDY0X3QgdXNlQ291bnQ7CisgICAgfTsKKyAgICB1c2luZyBG
b250SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBGb250U3RhdGU+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6
ZVJlbmRlcmluZ1VwZGF0ZUZvckZvbnRzKCk7CkBAIC02OCw4ICs3OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VI
YXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBtX2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVuZGVy
aW5nVXBkYXRlVmVyc2lvbk1hcDsKKyAgICBGb250SGFzaE1hcCBtX2ZvbnRzOwogICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUgeyAwIH07CiAg
ICAgdWludDY0X3QgbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiB7IDEgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434268</attachid>
            <date>2021-07-26 21:23:26 -0700</date>
            <delta_ts>2021-07-27 17:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228225-20210726212326.patch</filename>
            <type>text/plain</type>
            <size>16885</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdkY2Q5ZDNkNDg4MWRi
NTQ2N2U0ZGExZjlkMWRkOTJiMjE4NThiNC4uNzIyZGQ1NDNlNDFhMmMzNjJkYjE4YWY2NDUwYTJl
MzJiNDg3OTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTI2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1ZmZlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCA0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMTYuCisKKyAg
ICAgICAgU2ltcGx5IGFkZCBhIGNhbGxiYWNrIHRvIGluY3JlbWVudCB0aGUgdXNlIGNvdW50ZXIg
Zm9yIEltYWdlQnVmZmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzbid0IHVzaW5nIHRoZSBz
YW1lIG1lY2hhbmlzbSBhcyBOYXRpdmVJbWFnZXMvRm9udHMgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMjQpCisgICAgICAgIGJlY2F1c2UgSW1hZ2VCdWZmZXJz
IGFyZW4ndCBhbHJlYWR5IHRyYWNrZWQgdGhyb3VnaCBSZW1vdGVSZXNvdXJjZUNhY2hlLiBTbywg
d2UgY2FuIHVzZSBhIHBhcmFsbGVsIGRlc2lnbiB0bworICAgICAgICBob3cgSW1hZ2VCdWZmZXJz
IGhhdmUgYSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSB2aXJ0dWFsIGZ1bmN0aW9uLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmluY3JlbWVudFVzZUNvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKwogMjAyMS0w
Ny0yNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtHUFUgUHJvY2Vzc10gQWRkIHJlc291cmNlIHVzZSBjb3VudGVyIGluZnJhc3RydWN0dXJlIHRv
IFJlbW90ZVJlc291cmNlQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjYyNjdkOGQ1ZTQwZjQyZTkxMmRjMmFh
N2JiNDBjMzQ1Yjg3OGUyOC4uZWVmMTQ4YWEwMDAwNDA5MTMzZWQyOWJkMzhjODVlYTE4MzVhZjg2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNy0yNiAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3RhcnQg
dHJhY2tpbmcgcmVzb3VyY2UgdXNlcyBmb3IgSW1hZ2VCdWZmZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbHkgaW1wbGVtZW50IGluY3JlbWVu
dFVzZUNvdW50ZXIoKSBhbmQgcGFzcyB0aGUgdXNlIGNvdW50ZXIgdG8gcmVsZWFzZVJlbW90ZVJl
c291cmNlLiAKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorCiAyMDIxLTA3LTI2ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgcmVz
b3VyY2UgdXNlIGNvdW50ZXIgaW5mcmFzdHJ1Y3R1cmUgdG8gUmVtb3RlUmVzb3VyY2VDYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXgg
ZjFjN2RiMTNkODU2NTc0YTE0ZDI4OGU3NTQ5ZDhiMGNiZmFiNWU4Yi4uY2Y1MWY3OTk2OTUyNDc3
ZTE2MTQ2MmExNGJmZDE3OTA1NzYxZjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRVc2VDb3VudGVy
KCkgeyB9CiAKICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGI4YTJkYjljZTBkZjFjOTkyYjVlYzQ3ZWEw
NzA3YzhmYjVmODU4YmEuLjA5MWVmOWM2MzQwOTM0ZGQzMTE3OGMzODRhNTVlNTU3Y2RmMDhlNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgdm9pZCBSZWNvcmRlcjo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmUKICAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+
KG91dHB1dEZvcm1hdCwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OnB1dFBpeGVs
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2lu
dCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZWNv
cmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7CiAgICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihw
aXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKIH0KQEAgLTE5OCwx
MiArMTk4LDEzIEBAIHZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hl
ZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCCiAgICAgYXBwZW5kPERyYXdHbHlw
aHM+KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5n
TW9kZSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghY2FuRHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIGltYWdlQnVmZmVyLmluY3JlbWVudFVzZUNvdW50ZXIoKTsK
ICAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwogICAgIGFw
cGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CkBAIC00NjUsNiArNDY2LDcg
QEAgSW50UmVjdCBSZWNvcmRlcjo6Y2xpcEJvdW5kcygpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6
OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBpbWFnZUJ1ZmZlci5pbmNyZW1lbnRVc2VDb3VudGVyKCk7
CiAgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBh
cHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKaW5kZXggZjM3MGI0MTE4ZDAyNDNhMWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1My4u
Y2JjM2RjNmY3YzM3MTA5Njc5NzFlODg3N2M5ZmQ2Mjk3NDQ1ODIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTUsMTIgKzU1LDE0IEBAIEdyYXBoaWNz
Q29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBU
PgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5l
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJ
bWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZl
ckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRlbUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+
KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZm
ZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5h
cHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOworICAgICAgICBpZiAoZGVsZWdhdGUpCisgICAg
ICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVzb3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNl
SWRlbnRpZmllcjsKQEAgLTExOSwxMyArMTIxLDEzIEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFs
PFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBp
ZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFn
ZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChh
dXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRl
bTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0sIG1fZGVs
ZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQog
CiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
PENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKKyAg
ICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1h
Z2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJz
LCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFz
b246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggZDRjYmMyYzBjOTAz
NDMwNTk2OGYyNzdiNTUzNjFiYjI3NDgyZmVhOC4uZjc0OTEyMDA0ZjllMjBmNDU5ZmI1Yzg3MTU5
YjQzNDQwODVlZGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOgogCiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgp
LnJlbGVhc2VJbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIDApOyAvLyBGSVhNRTogUGFzcyB0aGUgcmVh
bCB1c2UgY291bnQgaGVyZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV91
c2VDb3VudCk7CiAgICAgfQogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0VHJhY2tzRHJhd2luZ0l0
ZW1FeHRlbnRzKGZhbHNlKTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXNlRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlcjo6cmVuZGVyaW5nTW9kZSgpOyB9CisgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6OnJlbmRlcmluZ01vZGUoKTsgfQogCiAgICAgLy8gSXQgaXMgc2FmZSB0byBhY2Nlc3Mg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciBmcm9tIHRoZSBtYWluIHRocmVhZCB3aXRob3V0IGxv
Y2tpbmcgc2luY2UgaXQKICAgICAvLyBvbmx5IGdldHMgbW9kaWZpZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fc2Vu
dEZsdXNoSWRlbnRpZmllciAhPSBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyOwogICAgIH0KIAot
ICAgIHZvaWQgZGlkRmx1c2goV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGbHVzaChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikgZmluYWwKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2sgfTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChTaGFyZWREaXNwbGF5TGlzdHMs
ICJFeGNlZWRlZCB0aW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGZsdXNoIGluIHJlbW90ZSByZW5k
ZXJpbmcgYmFja2VuZDogJSIgUFJJdTY0ICIuIiwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQogCi0g
ICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNv
bnN0IG92ZXJyaWRlCisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kKiBlbnN1cmVCYWNr
ZW5kQ3JlYXRlZCgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsK
QEAgLTE2NCw3ICsxNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2JhY2tlbmQu
Z2V0KCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgdG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTczLDcgKzE3Myw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVz
b2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmluYWwKICAgICB7CiAgICAg
ICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTE4Miw3ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0RGF0YUZvckltYWdlQnVm
ZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6OkNv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHk6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0
ZVBsYXRmb3JtSW1hZ2UoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
b3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkJhY2tpbmdTdG9y
ZUNvcHk6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0
b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAg
IGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJl
dHVybiBiaXRtYXAtPmNyZWF0ZUltYWdlKCk7CiAgICAgfQogCi0gICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdCBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxC
dWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBk
ZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMCw3ICsy
MzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9CiAK
LSAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyJiBwaXhl
bEJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBp
eGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCkgZmluYWwKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYXRoIGlu
c2lkZSBQaXhlbEJ1ZmZlcjo6Y3JlYXRlKCkgZG9lc24ndCBhZ3JlZSB3aXRoIHRoZSBtYXRoIGlu
c2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKCkgYWJvdXQgaG93IG1fcmVz
b2x1dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGluIHRoZSBJbWFnZUJ1ZmZlci4K
ICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dFBpeGVsQnVmZmVyKCkgaXMgb25seSBjYWxs
ZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9PSAxLgpAQCAtMjM4LDE1ICsyMzgsMTUgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0UGl4ZWxCdWZm
ZXIocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQog
Ci0gICAgYm9vbCBwcmVmZXJzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgcHJlZmVyc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGUKKyAg
ICB2b2lkIGZsdXNoQ29udGV4dCgpIGZpbmFsCiAgICAgewogICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7CiAgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CiAgICAgfQogCi0g
ICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICB2b2lkIGZsdXNoRHJh
d2luZ0NvbnRleHQoKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTYsNyAr
MjU2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB3YWl0Rm9yRGlkRmx1c2hXaXRoVGltZW91dCgp
OwogICAgIH0KIAotICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dEFzeW5jKCkgb3ZlcnJpZGUK
KyAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpIGZpbmFsCiAgICAgewogICAgICAg
ICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI3MCwxMyArMjcwLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgY2xl
YXJEaXNwbGF5TGlzdCgpOwogICAgIH0KIAotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJD
b3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiBpbWFnZSkgZmluYWwKICAgICB7CiAgICAgICAgIGlm
IChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2
ZUltYWdlKGltYWdlKTsKICAgICB9CiAKLSAgICBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBvdmVycmlkZQorICAg
IGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1h
Z2VCdWZmZXIpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzAzLDcgKzMw
Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgp
LmNsZWFyKCk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGUKKyAgICBib29sIGNhbkFwcGVuZEl0ZW1P
ZlR5cGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBmaW5hbAogICAgIHsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTEsMTggKzMxMSwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgZGlkQXBwZW5kRGF0YShjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSYgaGFuZGxlLCBzaXplX3QgbnVt
YmVyT2ZCeXRlcywgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXIgZGlk
Q2hhbmdlSXRlbUJ1ZmZlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEFwcGVuZERhdGEoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUmIGhhbmRsZSwgc2l6ZV90IG51
bWJlck9mQnl0ZXMsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVtQnVmZmVyIGRp
ZENoYW5nZUl0ZW1CdWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5kaWRBcHBlbmREYXRhKGhhbmRsZSwgbnVtYmVyT2ZCeXRlcywgZGlkQ2hh
bmdlSXRlbUJ1ZmZlciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAot
ICAgIHZvaWQgY2FjaGVGb250KFdlYkNvcmU6OkZvbnQmIGZvbnQpIG92ZXJyaWRlCisgICAgdm9p
ZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYgZm9udCkgZmluYWwKICAgICB7CiAgICAgICAgIGlm
IChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZUZvbnQo
Zm9udCk7CiAgICAgfQogCisgICAgdm9pZCBpbmNyZW1lbnRVc2VDb3VudGVyKCkgZmluYWwKKyAg
ICB7CisgICAgICAgICsrbV91c2VDb3VudDsKKyAgICB9CisKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpKQpAQCAtMzQzLDEzICszNDgsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICB9LCBpdGVt
KTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJyaWRlCisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIo
KSBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxUaHJlYWRTYWZl
UmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyPEJhY2tlbmRUeXBlPj4oKnRoaXMpOwogICAgIH0KIAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVu
dGlmaWVyOwogICAgIExvY2sgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2s7CisgICAgdWlu
dDY0X3QgbV91c2VDb3VudCB7IDAgfTsKICAgICBDb25kaXRpb24gbV9yZWNlaXZlZEZsdXNoSWRl
bnRpZmllckNoYW5nZWRDb25kaXRpb247CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNo
SWRlbnRpZmllciBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllckxvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBt
YWluIHRocmVhZCBidXQgbWF5IGdldCBxdWVyaWVkIG9uIGEgc2Vjb25kYXJ5IHRocmVhZC4KICAg
ICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434388</attachid>
            <date>2021-07-27 17:05:41 -0700</date>
            <delta_ts>2021-07-28 00:04:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228225-20210727170540.patch</filename>
            <type>text/plain</type>
            <size>8355</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNjM2IzZmIzZWQ5ZDU3
ZGMwZjhhM2ZiNGMxMGRlYzk0ZTE0NDhkOS4uNjFmZTk0Y2QxNmQyN2RjMTNlN2VkZDVmYjc4MWNl
YTk3ZWViNmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA3LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1ZmZlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCA0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMTYuCisKKyAg
ICAgICAgU2ltcGx5IGFkZCBhIGNhbGxiYWNrIHRvIGluY3JlbWVudCB0aGUgdXNlIGNvdW50ZXIg
Zm9yIEltYWdlQnVmZmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlzbid0IHVzaW5nIHRoZSBz
YW1lIG1lY2hhbmlzbSBhcyBOYXRpdmVJbWFnZXMvRm9udHMgKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMjQpCisgICAgICAgIGJlY2F1c2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IGRvZXNuJ3QgaW5pdGlhdGUgdGhlIHJlbGVhc2UgbWVzc2FnZSwgbGlrZSBp
dCBkb2VzIGZvciBOYXRpdmVJbWFnZXMvRm9udHMuCisgICAgICAgIFRoZSB0cmFja2luZyBvZiBz
dGF0ZSBzZWVtcyB0byBiZSBkb25lIGluc2lkZSB0aGUgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBy
YXRoZXIgdGhhbiBpbiB0aGUgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LgorICAgICAgICBTbywg
d2UgY2FuIHVzZSBhIHBhcmFsbGVsIGRlc2lnbiB0byBob3cgSW1hZ2VCdWZmZXJzIGhhdmUgYSBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSB2aXJ0dWFsIGZ1bmN0aW9uLCBhbmQgZ2l2ZQor
ICAgICAgICB0aGVtIGEgaW5jcmVtZW50VXNlQ291bnRlcigpIHZpcnR1YWwgZnVuY3Rpb24gdG9v
LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmluY3JlbWVudFVzZUNvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseUltYWdlQnVmZmVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisKIDIwMjEt
MDctMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIENvZGUgY2xlYW51cCBhZnRlciByMjgwMzU2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3
MDhkM2UwMmE4NWFhNGEwMjQwMmEyZDI3NWM4NmMzZmQwMjFjZTYuLjE0M2I5N2NlNjhmMGQ3NThk
NWNiNThiYTVlNTRjYmViYTkyZGJlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEt
MDctMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVIFByb2Nlc3NdIFN0YXJ0IHRyYWNraW5nIHJlc291cmNlIHVzZXMgZm9yIEltYWdlQnVm
ZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KToKKwogMjAyMS0wNy0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29kZSBjbGVhbnVwIGFmdGVyIHIyODAzNTYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGYx
YzdkYjEzZDg1NjU3NGExNGQyODhlNzU0OWQ4YjBjYmZhYjVlOGIuLmNmNTFmNzk5Njk1MjQ3N2Ux
NjE0NjJhMTRiZmQxNzkwNTc2MWY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGNhbk1hcEJhY2tpbmdTdG9yZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50VXNlQ291bnRlcigp
IHsgfQogCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBmZGQyMTg2NDU3ZDgyNzczYTczNGEyZTU3ODI5
YzQ5Mzk0ODM3ZDY3Li40OGM1ZTY1YjM2MGZkZTlhZjBjNDBiMzllMTMyNzA1MDI3YmI3ZjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMDQsNiArMjA0
LDcgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmUKICAgICAgICAgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpbWFnZUJ1ZmZlci5pbmNyZW1lbnRVc2VDb3Vu
dGVyKCk7CiAgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsK
ICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQpAQCAtNDY1LDYg
KzQ2Niw3IEBAIEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKSBjb25zdAogCiB2b2lkIFJl
Y29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CisgICAgaW1hZ2VCdWZmZXIuaW5jcmVtZW50VXNlQ291
bnRlcigpOwogICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7
CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCmluZGV4IGQzMjcwZDFjYzJiNWRmNDRkY2Y5ZDAxZjQyMWVlMWFkNjc4
YjMxZTkuLmNkM2QxMGQyNzc1NTU5ZTk5Mzg1MGQ0MmM1MjEyZGM3NzU1MjQ5MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTU1LDEyICs1NSwxNCBAQCBH
cmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkK
K2lubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1h
Z2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSwgUmVwbGF5ZXI6
OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBhdXRvJiBpbWFnZUJ1ZmZlckl0ZW0gPSBpdGVt
LmdldDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVt
LmltYWdlQnVmZmVySWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGlt
YWdlQnVmZmVycy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBpbWFnZUJ1ZmZl
ckl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVmZmVyKTsKKyAgICAgICAgaWYgKGRlbGVnYXRl
KQorICAgICAgICAgICAgZGVsZWdhdGUtPnJlY29yZFJlc291cmNlVXNlKHJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBy
ZXNvdXJjZUlkZW50aWZpZXI7CkBAIC0xMzMsMTMgKzEzNSwxMyBAQCBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aQogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9Owog
CiAgICAgaWYgKGl0ZW0uaXM8RHJhd0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxE
cmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQorICAgICAg
ICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1
ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVt
LCBtX2RlbGVnYXRlKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1p
c3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyKSB9OwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9Owog
ICAgIH0KIAogICAgIGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVm
ZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRl
bSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBh
cHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdl
QnVmZmVycywgaXRlbSwgbV9kZWxlZ2F0ZSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDMzMjBm
MjVmOGE2MzcyNDkxMzg4NmYwZTAxODQxZTljZTM3ZGE2MTAuLmM5OWExOTMwNjllYjg0ZWY2OWZi
MTRjZWQ0MjZkYmQwZGFjNjUzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJl
c291cmNlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAwKTsgLy8gRklYTUU6IFBhc3Mg
dGhlIHJlYWwgdXNlIGNvdW50IGhlcmUuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIG1fdXNlQ291bnQpOwogICAgIH0KIAogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQpAQCAtMzIzLDYgKzMyMywxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KCkucmVjb3JkRm9udFVzZShmb250KTsKICAgICB9CiAKKyAgICB2
b2lkIGluY3JlbWVudFVzZUNvdW50ZXIoKSBmaW5hbAorICAgIHsKKyAgICAgICAgKyttX3VzZUNv
dW50OworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
IGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBmaW5hbAogICAgIHsKICAgICAgICAg
aWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCkBAIC0zNTAsNiArMzU1
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7CiAgICAgTG9jayBtX3JlY2VpdmVkRmx1c2hJZGVu
dGlmaWVyTG9jazsKKyAgICB1aW50NjRfdCBtX3VzZUNvdW50IHsgMCB9OwogICAgIENvbmRpdGlv
biBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyQ2hhbmdlZENvbmRpdGlvbjsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIg
V1RGX0dVQVJERURfQllfTE9DSyhtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyTG9jayk7IC8vIE9u
bHkgbW9kaWZpZWQgb24gdGhlIG1haW4gdGhyZWFkIGJ1dCBtYXkgZ2V0IHF1ZXJpZWQgb24gYSBz
ZWNvbmRhcnkgdGhyZWFkLgogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434406</attachid>
            <date>2021-07-28 00:04:19 -0700</date>
            <delta_ts>2021-07-28 00:21:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228225-20210728000418.patch</filename>
            <type>text/plain</type>
            <size>12670</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIzYmM5ZTgwYWM1MzAw
M2E1OTdkODIzZjdiNGVjYjFlMGFlYzY3OC4uNzQ3ODM1ZmM4YmE5MTYzOGIxMzRkOTk3N2JkNDVh
ZTJjZGNjYzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1ZmZlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCA0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMTYuCisKKyAg
ICAgICAgVGhpcyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgTmF0aXZlSW1hZ2VzL0ZvbnRzIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjI0KS4KKyAgICAgICAgVGhl
IG9ubHkgcmVhbCBkaWZmZXJlbmNlIHRvIGhvdyBJbWFnZUJ1ZmZlcnMgd29yayB0b2RheSBpcyB0
aGF0IFJlbW90ZUltYWdlQnVmZmVyUHJveHkncyBkZXN0cnVjdG9yCisgICAgICAgIGRvZXNuJ3Qg
ZGlyZWN0bHkgdGVsbCB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHRvIHJlbGVhc2Ug
aXRzIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKKyAgICAgICAgYnV0IGluc3RlYWQgdGhp
cyBjb2RlcGF0aCBnb2VzIHRocm91Z2ggdGhlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB3aGlj
aCBpcyB0cmFja2luZyB0aGUgbnVtYmVyIG9mCisgICAgICAgIHVzZXMgb2YgdGhlIHJlc291cmNl
LiBUaGlzIGlzIHNvIHRoZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgY2FuIGluamVjdCB0aGUg
dXNlIGNvdW50IGludG8gdGhlCisgICAgICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZSBjb21tYW5k
LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6cmVjb3JkSW1hZ2VCdWZmZXJVc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjphcHBseUltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisKIDIwMjEtMDctMjcgIEpvb25naHVu
IFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJl
bW92ZSB0aGUgYnVpbGQgd2FybmluZyBiZWxvdyBzaW5jZSByMjgwMzMyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3
M2UxOTllMWI3ZWIyM2Q0NzlmZTMwNTJjYmZiOTUwOWQxYmI1MmNjLi4zODQzMjRlMWIyMzBiMDUw
MDEzMzdjODlhOGY5Njk3NTUxMTQ4Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIx
LTA3LTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1
ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
ODIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmRJbWFnZUJ1ZmZlclVzZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVdhc0Rlc3Ry
b3llZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5Lmg6CisKIDIwMjEtMDctMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFttYWNPU10gT3ZlcmZsb3cg
YnV0dG9uIHN0aWxsIHNob3dzIGFzIGBvbmAgZXZlbiBhZnRlciBjb250ZXh0bWVudSBpcyBkaXNt
aXNzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBmZGQy
MTg2NDU3ZDgyNzczYTczNGEyZTU3ODI5YzQ5Mzk0ODM3ZDY3Li4xZTQ3MjE3ZTA3NGNlNTg3YmNh
ZmZjZmVhYjRjMzEwMGJkYTE1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0yMDQsNiArMjA0LDggQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmUKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAo
bV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1h
Z2VCdWZmZXIpOwogICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cik7CiAgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KQEAgLTQ2
NSw2ICs0NjcsOCBAQCBJbnRSZWN0IFJlY29yZGVyOjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogeworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAg
ICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CiAgICAgbV9k
aXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBmZTRlM2Y0OTc3MzhlNDEzMmQ2NDRjMDIwMWZmZjZiZTY4OWE1NTk1Li4zMWE1MjI4OTBiN2Vl
NGU2NTBmNWJhNWJiMWI3ZTUyNDYyYWYxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250Jikg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZl
ciYpIHsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZDMyNzBkMWNjMmI1
ZGY0NGRjZjlkMDFmNDIxZWUxYWQ2NzhiMzFlOS4uY2QzZDEwZDI3NzU1NTllOTkzODUwZDQyYzUy
MTJkYzc3NTUyNDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cApAQCAtNTUsMTIgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQo
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVm
ZmVycywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRl
bUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8m
IGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50
aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYg
KGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIp
KSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIp
OworICAgICAgICBpZiAoZGVsZWdhdGUpCisgICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVz
b3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKQEAgLTEzMywxMyArMTM1
LDEzIEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdl
QnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQo
KSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1h
Z2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0
KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVm
ZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKaW5kZXggMzMyMGYyNWY4YTYzNzI0OTEzODg2ZjBlMDE4NDFlOWNlMzdkYTYx
MC4uNDdjODIzZDUxMWI3MGZkOTQ2OGMwODRlZWJlOGM4NzQ1NTEyMzdjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTcyLDcgKzcyLDYgQEAgcHVibGljOgogCiAgICAgICAgIGZs
dXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlbGVhc2VJbWFnZUJ1ZmZlcihtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIDApOyAvLyBGSVhNRTogUGFzcyB0aGUgcmVhbCB1c2UgY291bnQgaGVyZS4KICAgICB9CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkKQEAgLTMyMyw2ICszMjIsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlY29y
ZEZvbnRVc2UoZm9udCk7CiAgICAgfQogCisgICAgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJ
bWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVjb3JkSW1hZ2VCdWZmZXJV
c2UoaW1hZ2VCdWZmZXIpOworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBmaW5hbAogICAg
IHsKICAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggYWFlMjM2OTFhYWRjYjBmMDJk
NzYwNjU5ODY1ZmZiODFlNDEyZTFmZC4uYmE2ODBlMmRhYTE5M2YwYWNkNTY3NDU4MWY2YmE5Zjgz
OTNlY2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtNDcsMTkg
KzQ3LDI2IEBAIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6flJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSgpCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKLSAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgbWFrZVdlYWtQdHIoaW1hZ2VCdWZmZXIpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgSW1hZ2VCdWZmZXJTdGF0ZSB7IG1ha2VXZWFrUHRyKGltYWdlQnVmZmVyKSwgMCB9KTsK
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQog
CiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZl
cihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogewotICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKS5nZXQoKTsKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikuaW1hZ2VCdWZmZXIuZ2V0KCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBib29sIGZvdW5kID0g
bV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAg
QVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ltYWdl
QnVmZmVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9B
U1NFUlQoaXRlcmF0b3IgIT0gbV9pbWFnZUJ1ZmZlcnMuZW5kKCkpOworCisgICAgYXV0byB1c2VD
b3VudCA9IGl0ZXJhdG9yLT52YWx1ZS51c2VDb3VudDsKKworICAgIGF1dG8gc3VjY2VzcyA9IG1f
aW1hZ2VCdWZmZXJzLnJlbW92ZShpdGVyYXRvcik7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNz
LCBzdWNjZXNzKTsKKworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKIH0K
IAogaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVC
aXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQpAQCAtNzgsNiArODUsMTQg
QEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVC
aXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYKICAgICByZXR1cm4gYml0bWFwOwogfQogCit2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVjb3JkSW1hZ2VCdWZmZXJVc2UoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ltYWdl
QnVmZmVycy5maW5kKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsK
KyAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9pbWFnZUJ1ZmZlcnMuZW5kKCkpOworCisgICAgKytp
dGVyYXRvci0+dmFsdWUudXNlQ291bnQ7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpyZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0
byBpdGVyYXRvciA9IG1fbmF0aXZlSW1hZ2VzLmZpbmQoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpOwpAQCAtMTgyLDExICsxOTcsMTEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKCkKIAogdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbW90ZVJlc291cmNlQ2FjaGVXYXNEZXN0cm95ZWQoKQogewotICAgIGZv
ciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX2ltYWdlQnVmZmVycy52YWx1ZXMoKSkgewotICAgICAg
ICBpZiAoIWltYWdlQnVmZmVyKQorICAgIGZvciAoYXV0byYgaXRlbSA6IG1faW1hZ2VCdWZmZXJz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICghaXRlbS5pbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcmVhdGVS
ZW1vdGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwotICAgICAgICBpbWFnZUJ1ZmZlci0+Y2xl
YXJCYWNrZW5kKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNyZWF0
ZVJlbW90ZUltYWdlQnVmZmVyKCppdGVtLmltYWdlQnVmZmVyKTsKKyAgICAgICAgaXRlbS5pbWFn
ZUJ1ZmZlci0+Y2xlYXJCYWNrZW5kKCk7CiAgICAgfQogICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFy
KCk7CiAgICAgY2xlYXJGb250TWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApp
bmRleCBiNjI3Y2M4MTJkOTE5OGZjMWIxMjM0ZjM5NDUzMGU4MzI1ODFiNDBiLi43MmM3YTYwOTVk
NGViZDdjMDg2YzAyZGZhMWVjYTAwMWM2MDdlNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWNvcmROYXRp
dmVJbWFnZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVjb3JkRm9udFVz
ZShXZWJDb3JlOjpGb250Jik7CisgICAgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpOwog
CkBAIC01OSw3ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CiAK
IHByaXZhdGU6Ci0gICAgdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+PjsKKyAgICBzdHJ1Y3QgSW1hZ2VCdWZmZXJTdGF0ZSB7CisgICAgICAgIFdlYWtQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworICAgICAgICB1aW50NjRfdCB1c2VDb3Vu
dDsKKyAgICB9OworICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlclN0YXRlPjsKIAogICAg
IHN0cnVjdCBOYXRpdmVJbWFnZVN0YXRlIHsKICAgICAgICAgV2Vha1B0cjxXZWJDb3JlOjpOYXRp
dmVJbWFnZT4gaW1hZ2U7Cg==
</data>
<flag name="commit-queue"
          id="456897"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434408</attachid>
            <date>2021-07-28 00:14:15 -0700</date>
            <delta_ts>2021-07-28 12:59:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228225-20210728001414.patch</filename>
            <type>text/plain</type>
            <size>12679</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIzYmM5ZTgwYWM1MzAw
M2E1OTdkODIzZjdiNGVjYjFlMGFlYzY3OC4uNzQ3ODM1ZmM4YmE5MTYzOGIxMzRkOTk3N2JkNDVh
ZTJjZGNjYzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1ZmZlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCA0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgyMTYuCisKKyAg
ICAgICAgVGhpcyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgTmF0aXZlSW1hZ2VzL0ZvbnRzIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjI0KS4KKyAgICAgICAgVGhl
IG9ubHkgcmVhbCBkaWZmZXJlbmNlIHRvIGhvdyBJbWFnZUJ1ZmZlcnMgd29yayB0b2RheSBpcyB0
aGF0IFJlbW90ZUltYWdlQnVmZmVyUHJveHkncyBkZXN0cnVjdG9yCisgICAgICAgIGRvZXNuJ3Qg
ZGlyZWN0bHkgdGVsbCB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IHRvIHJlbGVhc2Ug
aXRzIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKKyAgICAgICAgYnV0IGluc3RlYWQgdGhp
cyBjb2RlcGF0aCBnb2VzIHRocm91Z2ggdGhlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB3aGlj
aCBpcyB0cmFja2luZyB0aGUgbnVtYmVyIG9mCisgICAgICAgIHVzZXMgb2YgdGhlIHJlc291cmNl
LiBUaGlzIGlzIHNvIHRoZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgY2FuIGluamVjdCB0aGUg
dXNlIGNvdW50IGludG8gdGhlCisgICAgICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZSBjb21tYW5k
LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6cmVjb3JkSW1hZ2VCdWZmZXJVc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjphcHBseUltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisKIDIwMjEtMDctMjcgIEpvb25naHVu
IFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJl
bW92ZSB0aGUgYnVpbGQgd2FybmluZyBiZWxvdyBzaW5jZSByMjgwMzMyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3
M2UxOTllMWI3ZWIyM2Q0NzlmZTMwNTJjYmZiOTUwOWQxYmI1MmNjLi4zODQzMjRlMWIyMzBiMDUw
MDEzMzdjODlhOGY5Njk3NTUxMTQ4Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIx
LTA3LTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBTdGFydCB0cmFja2luZyByZXNvdXJjZSB1c2VzIGZvciBJbWFnZUJ1
ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
ODIyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpyZWNvcmRJbWFnZUJ1ZmZlclVzZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVtb3RlUmVzb3VyY2VDYWNoZVdhc0Rlc3Ry
b3llZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5Lmg6CisKIDIwMjEtMDctMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFttYWNPU10gT3ZlcmZsb3cg
YnV0dG9uIHN0aWxsIHNob3dzIGFzIGBvbmAgZXZlbiBhZnRlciBjb250ZXh0bWVudSBpcyBkaXNt
aXNzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBmZGQy
MTg2NDU3ZDgyNzczYTczNGEyZTU3ODI5YzQ5Mzk0ODM3ZDY3Li4xZTQ3MjE3ZTA3NGNlNTg3YmNh
ZmZjZmVhYjRjMzEwMGJkYTE1Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0yMDQsNiArMjA0LDggQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmUKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAo
bV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1h
Z2VCdWZmZXIpOwogICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cik7CiAgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KQEAgLTQ2
NSw2ICs0NjcsOCBAQCBJbnRSZWN0IFJlY29yZGVyOjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogeworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAg
ICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CiAgICAgbV9k
aXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBkZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBmZTRlM2Y0OTc3MzhlNDEzMmQ2NDRjMDIwMWZmZjZiZTY4OWE1NTk1Li4zMWE1MjI4OTBiN2Vl
NGU2NTBmNWJhNWJiMWI3ZTUyNDYyYWYxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250Jikg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZl
ciYpIHsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggZDMyNzBkMWNjMmI1
ZGY0NGRjZjlkMDFmNDIxZWUxYWQ2NzhiMzFlOS4uY2QzZDEwZDI3NzU1NTllOTkzODUwZDQyYzUy
MTJkYzc3NTUyNDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cApAQCAtNTUsMTIgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQo
KSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVm
ZmVycywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgSXRl
bUhhbmRsZSBpdGVtLCBSZXBsYXllcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIGF1dG8m
IGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50
aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYg
KGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIp
KSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIp
OworICAgICAgICBpZiAoZGVsZWdhdGUpCisgICAgICAgICAgICBkZWxlZ2F0ZS0+cmVjb3JkUmVz
b3VyY2VVc2UocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKQEAgLTEzMywxMyArMTM1
LDEzIEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdl
QnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQo
KSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0sIG1fZGVsZWdhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1h
Z2VCdWZmZXI+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0
KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVm
ZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtLCBtX2RlbGVnYXRlKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKaW5kZXggMzMyMGYyNWY4YTYzNzI0OTEzODg2ZjBlMDE4NDFlOWNlMzdkYTYx
MC4uYzY0ODc5ZGUwNDYwMTg0MTJkMWU2ZTk1YmEwZGJlMGE1MWI1ZGQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTcyLDcgKzcyLDYgQEAgcHVibGljOgogCiAgICAgICAgIGZs
dXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlbGVhc2VJbWFnZUJ1ZmZlcihtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIDApOyAvLyBGSVhNRTogUGFzcyB0aGUgcmVhbCB1c2UgY291bnQgaGVyZS4KICAgICB9CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkKQEAgLTMyMyw2ICszMjIsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLnJlY29y
ZEZvbnRVc2UoZm9udCk7CiAgICAgfQogCisgICAgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGZpbmFsCisgICAgeworICAgICAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVjb3JkSW1h
Z2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBm
aW5hbAogICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggYWFlMjM2OTFh
YWRjYjBmMDJkNzYwNjU5ODY1ZmZiODFlNDEyZTFmZC4uYmE2ODBlMmRhYTE5M2YwYWNkNTY3NDU4
MWY2YmE5ZjgzOTNlY2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApA
QCAtNDcsMTkgKzQ3LDI2IEBAIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6flJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSgpCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIoaW1hZ2VCdWZmZXIpKTsKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgSW1hZ2VCdWZmZXJTdGF0ZSB7IG1ha2VXZWFrUHRyKGltYWdlQnVmZmVy
KSwgMCB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCiBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewotICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKS5nZXQoKTsKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikuaW1hZ2VCdWZmZXIuZ2V0KCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBib29s
IGZvdW5kID0gbV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2ltYWdlQnVmZmVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
UkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbV9pbWFnZUJ1ZmZlcnMuZW5kKCkpOworCisgICAg
YXV0byB1c2VDb3VudCA9IGl0ZXJhdG9yLT52YWx1ZS51c2VDb3VudDsKKworICAgIGF1dG8gc3Vj
Y2VzcyA9IG1faW1hZ2VCdWZmZXJzLnJlbW92ZShpdGVyYXRvcik7CisgICAgQVNTRVJUX1VOVVNF
RChzdWNjZXNzLCBzdWNjZXNzKTsKKworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNv
dW50KTsKIH0KIAogaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQpAQCAtNzgs
NiArODUsMTQgQEAgaW5saW5lIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGVCaXRtYXBGcm9tTmF0aXZlSW1hZ2UoTmF0aXYKICAgICByZXR1cm4gYml0bWFwOwog
fQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVjb3JkSW1hZ2VCdWZmZXJVc2Uo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2ltYWdlQnVmZmVycy5maW5kKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKTsKKyAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9pbWFnZUJ1ZmZlcnMuZW5kKCkpOwor
CisgICAgKytpdGVyYXRvci0+dmFsdWUudXNlQ291bnQ7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiB7
CiAgICAgYXV0byBpdGVyYXRvciA9IG1fbmF0aXZlSW1hZ2VzLmZpbmQoaW1hZ2UucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkpOwpAQCAtMTgyLDExICsxOTcsMTEgQEAgdm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKCkKIAogdm9pZCBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbW90ZVJlc291cmNlQ2FjaGVXYXNEZXN0cm95ZWQoKQog
ewotICAgIGZvciAoYXV0byYgaW1hZ2VCdWZmZXIgOiBtX2ltYWdlQnVmZmVycy52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgIGZvciAoYXV0byYgaXRlbSA6IG1faW1h
Z2VCdWZmZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghaXRlbS5pbWFnZUJ1ZmZlcikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcmVhdGVSZW1vdGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwotICAgICAgICBpbWFnZUJ1
ZmZlci0+Y2xlYXJCYWNrZW5kKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNyZWF0ZVJlbW90ZUltYWdlQnVmZmVyKCppdGVtLmltYWdlQnVmZmVyKTsKKyAgICAgICAg
aXRlbS5pbWFnZUJ1ZmZlci0+Y2xlYXJCYWNrZW5kKCk7CiAgICAgfQogICAgIG1fbmF0aXZlSW1h
Z2VzLmNsZWFyKCk7CiAgICAgY2xlYXJGb250TWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaAppbmRleCBiNjI3Y2M4MTJkOTE5OGZjMWIxMjM0ZjM5NDUzMGU4MzI1ODFiNDBiLi43
MmM3YTYwOTVkNGViZDdjMDg2YzAyZGZhMWVjYTAwMWM2MDdlNWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZWNvcmROYXRpdmVJbWFnZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVj
b3JkRm9udFVzZShXZWJDb3JlOjpGb250Jik7CisgICAgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVz
ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZSgpOwogCkBAIC01OSw3ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTWVt
b3J5KCk7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+PjsKKyAgICBzdHJ1Y3QgSW1hZ2VCdWZmZXJTdGF0ZSB7CisgICAgICAgIFdl
YWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworICAgICAgICB1aW50NjRf
dCB1c2VDb3VudDsKKyAgICB9OworICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBJbWFnZUJ1ZmZlclN0YXRl
PjsKIAogICAgIHN0cnVjdCBOYXRpdmVJbWFnZVN0YXRlIHsKICAgICAgICAgV2Vha1B0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4gaW1hZ2U7Cg==
</data>
<flag name="review"
          id="456896"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
          </attachment>
      

    </bug>

</bugzilla>